From 10e6bd89e7634d079595e453351f77667bdadedc Mon Sep 17 00:00:00 2001 From: Martin Weise <martin.weise@tuwien.ac.at> Date: Mon, 9 Oct 2023 11:22:53 +0200 Subject: [PATCH] Added more info --- docs/images/architecture-docker-compose.png | Bin 55799 -> 61263 bytes docs/images/architecture-docker-compose.svg | 2 +- docs/system-services-authentication.md | 79 +- docs/system-services-broker.md | 35 +- docs/system-services-gateway.md | 30 +- docs/system-services-metadata.md | 12 + docs/system-services-upload.md | 18 +- docs/usage-auth.md | 60 + docs/usage-upload.md | 17 + misc/.$architecture.drawio.dtmp | 2295 +++++++++++++++++++ misc/architecture.drawio | 397 +--- mkdocs.yml | 2 + 12 files changed, 2587 insertions(+), 360 deletions(-) create mode 100644 docs/usage-auth.md create mode 100644 docs/usage-upload.md create mode 100644 misc/.$architecture.drawio.dtmp diff --git a/docs/images/architecture-docker-compose.png b/docs/images/architecture-docker-compose.png index 1446bf13c31785a2ffe0bd7ead14e239c1e944e8..c371e2adb6d182a12c4d9244b698cbd926d7f649 100644 GIT binary patch literal 61263 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%0A6qq26<I321%T&VOqnHXbUwnJPZL_T~2bb(>eO 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%0DAFKJQ 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 DW1~y0 literal 55799 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 zʢ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 diff --git a/docs/images/architecture-docker-compose.svg b/docs/images/architecture-docker-compose.svg index bf12cbe..f408905 100644 --- a/docs/images/architecture-docker-compose.svg +++ b/docs/images/architecture-docker-compose.svg @@ -1,3 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="840px" height="559px" viewBox="-0.5 -0.5 840 559" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 369 90.37 L 369 108 L 368.63 125.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 369 85.12 L 372.5 92.12 L 369 90.37 L 365.5 92.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 368.52 130.88 L 365.17 123.81 L 368.63 125.63 L 372.17 123.96 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="369.5" cy="7.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 369.5 15 L 369.5 40 M 369.5 20 L 354.5 20 M 369.5 20 L 384.5 20 M 369.5 40 L 354.5 60 M 369.5 40 L 384.5 60" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 370px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Researcher</div></div></div></foreignObject><text x="370" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Resea...</text></switch></g><path d="M 297.13 152 L 267.37 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 302.38 152 L 295.38 155.5 L 297.13 152 L 295.38 148.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 262.12 152 L 269.12 148.5 L 267.37 152 L 269.12 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 336 172 L 336 200 L 196 200 L 196 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 226.88 L 192.5 219.88 L 196 221.63 L 199.5 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 401 172 L 401 200 L 546 200 L 546 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 546 226.88 L 542.5 219.88 L 546 221.63 L 549.5 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 368.5 178.37 L 368.5 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 368.5 173.12 L 372 180.12 L 368.5 178.37 L 365 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 368.5 226.88 L 365 219.88 L 368.5 221.63 L 372 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 336 178.37 L 336 200 L 283 200 L 283 294 L 196 294 L 196 317.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 336 173.12 L 339.5 180.12 L 336 178.37 L 332.5 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 196 322.88 L 192.5 315.88 L 196 317.63 L 199.5 315.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 439.87 152 L 474.63 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434.62 152 L 441.62 148.5 L 439.87 152 L 441.62 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 479.88 152 L 472.88 155.5 L 474.63 152 L 472.88 148.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 401 178.37 L 401 200 L 459 200 L 459 294 L 546 294 L 546 317.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 401 173.12 L 404.5 180.12 L 401 178.37 L 397.5 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 546 322.88 L 542.5 315.88 L 546 317.63 L 549.5 315.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="303.5" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 305px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Gateway Service</div></div></div></foreignObject><text x="369" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway Service</text></switch></g><rect x="303.5" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 305px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Analyse Service</div></div></div></foreignObject><text x="369" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Analyse Service</text></switch></g><path d="M 196 370.37 L 196 397.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 365.12 L 199.5 372.12 L 196 370.37 L 192.5 372.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 196 402.88 L 192.5 395.88 L 196 397.63 L 199.5 395.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="131" y="324" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 344px; margin-left: 132px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Authentication Service<br />(Keycloak)</div></div></div></foreignObject><text x="196" y="348" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Authentication Servic...</text></switch></g><path d="M 546 370.37 L 546 397.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 546 365.12 L 549.5 372.12 L 546 370.37 L 542.5 372.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 546 402.88 L 542.5 395.88 L 546 397.63 L 549.5 395.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 617.37 344 L 654.63 344" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 612.12 344 L 619.12 340.5 L 617.37 344 L 619.12 347.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 659.88 344 L 652.88 347.5 L 654.63 344 L 652.88 340.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="481" y="324" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 344px; margin-left: 482px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Metadata Service</div></div></div></foreignObject><text x="546" y="348" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Metadata Service</text></switch></g><rect x="131" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 132px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Broker Service<br />(RabbitMQ)</div></div></div></foreignObject><text x="196" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Broker Service...</text></switch></g><path d="M 617.37 248 L 654.63 248" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 612.12 248 L 619.12 244.5 L 617.37 248 L 619.12 251.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 659.88 248 L 652.88 251.5 L 654.63 248 L 652.88 244.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="481" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 482px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Search Service</div></div></div></foreignObject><text x="546" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Search Service</text></switch></g><rect x="131" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 132px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UI</div></div></div></foreignObject><text x="196" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UI</text></switch></g><path d="M 661 224.6 C 661 219.85 672.19 216 686 216 C 692.63 216 698.99 216.91 703.68 218.52 C 708.37 220.13 711 222.32 711 224.6 L 711 271.4 C 711 276.15 699.81 280 686 280 C 672.19 280 661 276.15 661 271.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 711 224.6 C 711 229.35 699.81 233.2 686 233.2 C 672.19 233.2 661 229.35 661 224.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="643.5" y="280" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 290px; margin-left: 642px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">search-db</div></div></div></foreignObject><text x="686" y="294" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">search-db</text></switch></g><path d="M 717.37 344 L 771 344" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 712.12 344 L 719.12 340.5 L 717.37 344 L 719.12 347.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 661 320.6 C 661 315.85 672.19 312 686 312 C 692.63 312 698.99 312.91 703.68 314.52 C 708.37 316.13 711 318.32 711 320.6 L 711 367.4 C 711 372.15 699.81 376 686 376 C 672.19 376 661 372.15 661 367.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 711 320.6 C 711 325.35 699.81 329.2 686 329.2 C 672.19 329.2 661 325.35 661 320.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="643.5" y="376" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 386px; margin-left: 642px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">metadata-db</div></div></div></foreignObject><text x="686" y="390" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">metadata-db</text></switch></g><path d="M 521 412.6 C 521 407.85 532.19 404 546 404 C 552.63 404 558.99 404.91 563.68 406.52 C 568.37 408.13 571 410.32 571 412.6 L 571 459.4 C 571 464.15 559.81 468 546 468 C 532.19 468 521 464.15 521 459.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 571 412.6 C 571 417.35 559.81 421.2 546 421.2 C 532.19 421.2 521 417.35 521 412.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="503.5" y="468" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 478px; margin-left: 502px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="546" y="482" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><path d="M 171 412.6 C 171 407.85 182.19 404 196 404 C 202.63 404 208.99 404.91 213.68 406.52 C 218.37 408.13 221 410.32 221 412.6 L 221 459.4 C 221 464.15 209.81 468 196 468 C 182.19 468 171 464.15 171 459.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 221 412.6 C 221 417.35 209.81 421.2 196 421.2 C 182.19 421.2 171 417.35 171 412.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="153.5" y="468" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 478px; margin-left: 152px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">auth-db</div></div></div></foreignObject><text x="196" y="482" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">auth-db</text></switch></g><rect x="481" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 482px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Upload Service<br />(tusd)</div></div></div></foreignObject><text x="546" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Upload Service...</text></switch></g><rect x="731.5" y="358" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 368px; margin-left: 730px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">metadata-db-data</div></div></div></foreignObject><text x="786" y="372" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">metadata-db-data</text></switch></g><ellipse cx="785.5" cy="344" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="731.5" y="262" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 272px; margin-left: 730px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">search-db-data</div></div></div></foreignObject><text x="786" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">search-db-data</text></switch></g><path d="M 771.5 248 L 717.37 248" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 712.12 248 L 719.12 244.5 L 717.37 248 L 719.12 251.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="785.5" cy="248" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="492" y="538" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 548px; margin-left: 490px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db-data</div></div></div></foreignObject><text x="546" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db-data</text></switch></g><path d="M 546 510 L 546 490 L 546 508 L 546 494.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 546 489.12 L 549.5 496.12 L 546 494.37 L 542.5 496.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="546" cy="524" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><path d="M 196 510 L 196 494.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 196 489.12 L 199.5 496.12 L 196 494.37 L 192.5 496.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="196" cy="524" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="142" y="538" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 548px; margin-left: 140px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">auth-db-data</div></div></div></foreignObject><text x="196" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">auth-db-data</text></switch></g><path d="M 70 248 L 124.63 248" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 129.88 248 L 122.88 251.5 L 124.63 248 L 122.88 244.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="56" cy="248" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="2" y="262" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 272px; margin-left: 0px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">broker-service-data</div></div></div></foreignObject><text x="56" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">broker-service-data</text></switch></g><path d="M 70 344 L 124.63 344" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 129.88 344 L 122.88 347.5 L 124.63 344 L 122.88 340.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="56" cy="344" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="2" y="364" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 374px; margin-left: 0px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">authentication-service-data</div></div></div></foreignObject><text x="56" y="378" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">authentication-serv...</text></switch></g><path d="M 672 152 L 617.37 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 612.12 152 L 619.12 148.5 L 617.37 152 L 619.12 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="686" cy="152" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="632" y="166" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 176px; margin-left: 630px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">upload-service-data</div></div></div></foreignObject><text x="686" y="180" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">upload-service-data</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="710px" height="669px" viewBox="-0.5 -0.5 710 669"><defs/><g><path d="M 238.01 90.37 L 238.03 108 L 237.64 125.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 238 85.12 L 241.51 92.11 L 238.01 90.37 L 234.51 92.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 237.52 130.88 L 234.18 123.81 L 237.64 125.63 L 241.18 123.96 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="238.5" cy="7.5" rx="7.5" ry="7.5" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 238.5 15 L 238.5 40 M 238.5 20 L 223.5 20 M 238.5 20 L 253.5 20 M 238.5 40 L 223.5 60 M 238.5 40 L 253.5 60" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 67px; margin-left: 239px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">Researcher</div></div></div></foreignObject><text x="239" y="79" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Resea...</text></switch></g><path d="M 166.13 152 L 136.37 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 171.38 152 L 164.38 155.5 L 166.13 152 L 164.38 148.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 131.12 152 L 138.12 148.5 L 136.37 152 L 138.12 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 152px; margin-left: 151px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="151" y="155" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><path d="M 205 172 L 205 200 L 65 200 L 65 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 65 226.88 L 61.5 219.88 L 65 221.63 L 68.5 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 270 172 L 270.03 200 L 415 200 L 415 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 415 226.88 L 411.5 219.88 L 415 221.63 L 418.5 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 237.5 178.37 L 237.5 221.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 237.5 173.12 L 241 180.12 L 237.5 178.37 L 234 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 237.5 226.88 L 234 219.88 L 237.5 221.63 L 241 219.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 200px; margin-left: 238px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="238" y="203" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><path d="M 205 178.37 L 205 200 L 152.03 200 L 152.03 294 L 65 294 L 65 317.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 205 173.12 L 208.5 180.12 L 205 178.37 L 201.5 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 65 322.88 L 61.5 315.88 L 65 317.63 L 68.5 315.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 200px; margin-left: 181px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="181" y="203" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><path d="M 308.87 152 L 343.63 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 303.62 152 L 310.62 148.5 L 308.87 152 L 310.62 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 348.88 152 L 341.88 155.5 L 343.63 152 L 341.88 148.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 152px; margin-left: 326px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">TUSD</div></div></div></foreignObject><text x="326" y="155" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">TUSD</text></switch></g><path d="M 270.01 178.37 L 270.03 200 L 328.03 200 L 328.03 394 L 415 394 L 415 413.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 270 173.12 L 273.51 180.11 L 270.01 178.37 L 266.51 180.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 415 418.88 L 411.5 411.88 L 415 413.63 L 418.5 411.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 199px; margin-left: 294px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="294" y="202" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><rect x="172.5" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Gateway Service</div></div></div></foreignObject><text x="238" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Gateway Service</text></switch></g><rect x="172.5" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 174px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Analyse Service</div></div></div></foreignObject><text x="238" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Analyse Service</text></switch></g><path d="M 65 370.37 L 65 397.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 65 365.12 L 68.5 372.12 L 65 370.37 L 61.5 372.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 65 402.88 L 61.5 395.88 L 65 397.63 L 68.5 395.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="324" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 344px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Authentication Service<br />(Keycloak)</div></div></div></foreignObject><text x="65" y="348" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Authentication Servic...</text></switch></g><path d="M 415 466.37 L 415 507.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 415 461.12 L 418.5 468.12 L 415 466.37 L 411.5 468.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 415 512.88 L 411.5 505.88 L 415 507.63 L 418.5 505.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 486.37 440 L 523.63 440" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 481.12 440 L 488.12 436.5 L 486.37 440 L 488.12 443.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 528.88 440 L 521.88 443.5 L 523.63 440 L 521.88 436.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 440px; margin-left: 504px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">JDBC</div></div></div></foreignObject><text x="504" y="443" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">JDBC</text></switch></g><rect x="350" y="420" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 440px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Metadata Service</div></div></div></foreignObject><text x="415" y="444" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Metadata Service</text></switch></g><path d="M 130 248 L 149.03 248 C 149.03 244.1 155.03 244.1 155.03 248 L 155.03 248 L 160.03 248 L 160.03 394 L 238.49 394 L 238.5 413.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="1 1" pointer-events="stroke"/><path d="M 238.5 418.88 L 235 411.88 L 238.5 413.63 L 242 411.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 394px; margin-left: 200px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">Spring AMQP</div></div></div></foreignObject><text x="200" y="397" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">Spring AMQP</text></switch></g><rect x="0" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Broker Service<br />(RabbitMQ)</div></div></div></foreignObject><text x="65" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Broker Service...</text></switch></g><path d="M 486.37 248 L 523.63 248" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 481.12 248 L 488.12 244.5 L 486.37 248 L 488.12 251.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 528.88 248 L 521.88 251.5 L 523.63 248 L 521.88 244.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 248px; margin-left: 505px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="505" y="251" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><rect x="350" y="228" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 248px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Search Service</div></div></div></foreignObject><text x="415" y="252" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Search Service</text></switch></g><rect x="0" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UI</div></div></div></foreignObject><text x="65" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UI</text></switch></g><path d="M 530 224.6 C 530 219.85 541.19 216 555 216 C 561.63 216 567.99 216.91 572.68 218.52 C 577.37 220.13 580 222.32 580 224.6 L 580 271.4 C 580 276.15 568.81 280 555 280 C 541.19 280 530 276.15 530 271.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 580 224.6 C 580 229.35 568.81 233.2 555 233.2 C 541.19 233.2 530 229.35 530 224.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 586.37 440 L 640 440" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 581.12 440 L 588.12 436.5 L 586.37 440 L 588.12 443.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 530 416.6 C 530 411.85 541.19 408 555 408 C 561.63 408 567.99 408.91 572.68 410.52 C 577.37 412.13 580 414.32 580 416.6 L 580 463.4 C 580 468.15 568.81 472 555 472 C 541.19 472 530 468.15 530 463.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 580 416.6 C 580 421.35 568.81 425.2 555 425.2 C 541.19 425.2 530 421.35 530 416.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="512.5" y="472" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 482px; margin-left: 511px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">metadata-db</div></div></div></foreignObject><text x="555" y="486" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">metadata-db</text></switch></g><path d="M 390 522.6 C 390 517.85 401.19 514 415 514 C 421.63 514 427.99 514.91 432.68 516.52 C 437.37 518.13 440 520.32 440 522.6 L 440 569.4 C 440 574.15 428.81 578 415 578 C 401.19 578 390 574.15 390 569.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 440 522.6 C 440 527.35 428.81 531.2 415 531.2 C 401.19 531.2 390 527.35 390 522.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="372.5" y="578" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 588px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db</div></div></div></foreignObject><text x="415" y="592" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db</text></switch></g><path d="M 40 412.6 C 40 407.85 51.19 404 65 404 C 71.63 404 77.99 404.91 82.68 406.52 C 87.37 408.13 90 410.32 90 412.6 L 90 459.4 C 90 464.15 78.81 468 65 468 C 51.19 468 40 464.15 40 459.4 Z" fill="#dae8fc" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 90 412.6 C 90 417.35 78.81 421.2 65 421.2 C 51.19 421.2 40 417.35 40 412.6" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="22.5" y="468" width="85" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 478px; margin-left: 21px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">auth-db</div></div></div></foreignObject><text x="65" y="482" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">auth-db</text></switch></g><rect x="350" y="132" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 152px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Upload Service<br />(tusd)</div></div></div></foreignObject><text x="415" y="156" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Upload Service...</text></switch></g><rect x="600.5" y="454" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 464px; margin-left: 599px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">metadata-db-data</div></div></div></foreignObject><text x="655" y="468" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">metadata-db-data</text></switch></g><ellipse cx="654.5" cy="440" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="600.5" y="262" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 272px; margin-left: 599px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">search-db-data</div></div></div></foreignObject><text x="655" y="276" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">search-db-data</text></switch></g><path d="M 640.5 248 L 586.37 248" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 581.12 248 L 588.12 244.5 L 586.37 248 L 588.12 251.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="654.5" cy="248" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="361" y="648" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 658px; margin-left: 359px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">data-db-data</div></div></div></foreignObject><text x="415" y="662" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">data-db-data</text></switch></g><path d="M 415 620 L 415 600 L 415 618 L 415 604.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 415 599.12 L 418.5 606.12 L 415 604.37 L 411.5 606.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="415" cy="634" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><path d="M 65 510 L 65 494.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 65 489.12 L 68.5 496.12 L 65 494.37 L 61.5 496.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="65" cy="524" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="11" y="538" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 548px; margin-left: 9px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">auth-db-data</div></div></div></foreignObject><text x="65" y="552" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">auth-db-data</text></switch></g><path d="M 541 152 L 486.37 152" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 481.12 152 L 488.12 148.5 L 486.37 152 L 488.12 155.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><ellipse cx="555" cy="152" rx="14" ry="14" fill="#e1d5e7" stroke="#000000" pointer-events="all"/><rect x="501" y="166" width="108" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 112px; height: 1px; padding-top: 176px; margin-left: 499px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">upload-service-data</div></div></div></foreignObject><text x="555" y="180" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">upload-service-data</text></switch></g><path d="M 238.49 460 L 238.49 546 L 383.63 546" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 388.88 546 L 381.88 549.5 L 383.63 546 L 381.88 542.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 546px; margin-left: 271px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">JDBC</div></div></div></foreignObject><text x="271" y="549" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">JDBC</text></switch></g><rect x="173.5" y="420" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 440px; margin-left: 175px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Data Service</div></div></div></foreignObject><text x="239" y="444" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Data Service</text></switch></g><path d="M 480 344 L 555 344 L 555 286.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 555 281.12 L 558.5 288.12 L 555 286.37 L 551.5 288.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 323px; margin-left: 556px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">HTTP</div></div></div></foreignObject><text x="556" y="326" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">HTTP</text></switch></g><path d="M 480 344 L 555 344 L 555 401.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 555 406.88 L 551.5 399.88 L 555 401.63 L 558.5 399.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 374px; margin-left: 554px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 9px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">JDBC</div></div></div></foreignObject><text x="554" y="377" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="9px" text-anchor="middle">JDBC</text></switch></g><rect x="350" y="324" width="130" height="40" rx="6" ry="6" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 344px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Mirror Service</div></div></div></foreignObject><text x="415" y="348" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Mirror Service</text></switch></g><rect x="512.5" y="291" width="85" height="17" fill="rgb(255, 255, 255)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 89px; height: 1px; padding-top: 300px; margin-left: 511px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">search-db</div></div></div></foreignObject><text x="555" y="303" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">search-db</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> \ No newline at end of file diff --git a/docs/system-services-authentication.md b/docs/system-services-authentication.md index e279d0f..2c39395 100644 --- a/docs/system-services-authentication.md +++ b/docs/system-services-authentication.md @@ -4,25 +4,23 @@ author: Martin Weise # Authentication Service +## tl;dr + !!! debug "Debug Information" - * Ports: 8080/tcp, 8443/tcp - * Admin Console: `http://:8443/` + * Ports: 8080/tcp + * Admin Console: `http://:8080/api/auth/admin/` + * Health: `http://:8080/api/auth/health` + * Prometheus: `http://:8080/api/auth/metrics` + +## Overview Very specific to the deployment of the organization. In our reference implementation we implement a *security assertion markup language* (SAML) service provider and use our institutional SAML identity provider for obtaining account data through an encrypted channel. From version 1.2 onwards we use Keycloak for authentication and deprecated the previous Spring Boot application. -Consequently, -the authentication will be through Keycloak. - -!!! warning "Unsupported Keycloak features" - - Due to no demand at the time, we currently do not support the following Keycloak features: - - * E-Mail verification - * Temporary passwords +Consequently, the authentication will be through Keycloak. By default, the Authentication Service comes with a self-signed certificate valid 3 months from build date. For deployment it is *highly encouraged* to use your own certificate, properly issued by a trusted PKI, e.g. GÉANT. For @@ -216,58 +214,13 @@ public ResponseEntity<DatabaseBriefDto> create(@NotNull Long containerId, | `update-semantic-concept` | Can update own table column concept | | `update-semantic-unit` | Can update own table column unit | -## API - -### Obtain Access Token - -Access tokens are needed for almost all operations. - -=== "Terminal" - - ``` console - curl -X POST \ - -d "username=foo&password=bar&grant_type=password&client_id=dbrepo-client&scope=openid&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" \ - http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token - ``` - -=== "Python" - - ``` py - import requests - - auth = requests.post("http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token", data={ - "username": "foo", - "password": "bar", - "grant_type": "password", - "client_id": "dbrepo-client", - "scope": "openid", - "client_secret": "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" - }) - print(auth.json()["access_token"]) - ``` - -### Refresh Access Token - -Using the response from above, a new access token can be created via the refresh token provided. - -=== "Terminal" - - ``` console - curl -X POST \ - -d "grant_type=refresh_token&client_id=dbrepo-client&refresh_token=THE_REFRESH_TOKEN&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" \ - http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token - ``` +## Limitations -=== "Python" +* No support for sending e-mails through Keycloak +* No support for temporary passwords +* No support for multi-factor authentication - ``` py - import requests +## Security - auth = requests.post("http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token", data={ - "grant_type": "refresh_token", - "client_id": "dbrepo-client", - "client_secret": "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG", - "refresh_token": "THE_REFRESH_TOKEN" - }) - print(auth.json()["access_token"]) - ``` +1. Mount your TLS certificate / private key pair into `/app/tls.crt` and `/app/tls.key` and + set `KC_HTTPS_CERTIFICATE_FILE=/app/tls.crt` and set `KC_HTTPS_CERTIFICATE_KEY_FILE=/app/tls.key`. diff --git a/docs/system-services-broker.md b/docs/system-services-broker.md index 301f5c2..30cfcf1 100644 --- a/docs/system-services-broker.md +++ b/docs/system-services-broker.md @@ -4,17 +4,46 @@ author: Martin Weise # Broker Service +## tl;dr + !!! debug "Debug Information" * Ports: 5672/tcp, 15672/tcp * RabbitMQ Management Plugin: `http://:15672` * RabbitMQ Prometheus Plugin: `http://:15692/metrics` +## Overview + It holds exchanges and topics responsible for holding AMQP messages for later consumption. We -use [RabbitMQ](https://www.rabbitmq.com/) in the implementation. The AMQP endpoint listens to port `5672` for -regular declares and offers a management interface at port `15672`. +use [RabbitMQ](https://www.rabbitmq.com/) in the implementation. By default, the endpoint listens to the insecure port `5672` for incoming +AMQP tuples and insecure port `15672` for the management UI. -The default credentials are: +The default configuration creates a user with administrative privileges: * Username: `fda` * Password: `fda` +* Roles: `["administrator"]` + +The Broker Service allows two ways of authentication: + +1. Plain +2. OAuth2 + +For detailed examples how to authenticate with the Broker Service see +the [usage](/infrastructures/dbrepo/latest/usage-broker) page. + +## Limitations + +* No support for MQTT messaging as the protocol does not support virtual hosts other than `/`. + +## Security + +For a secure deployment it is necessary to configure the Broker Service as follows: + +1. Download the [`rabbitmq.conf`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/dev/dbrepo-broker-service/rabbitmq.conf.secure) and + change the `default_user` and `default_pass` lines before mounting it to `/etc/rabbitmq/rabbitmq.conf`. +2. Mount your previously generated certificate and RSA public key pair (PEM-encoded) to `/app/cert.pem` + and `/app/pubkey.pem`. Note that these are *not* used for TLS encryption, but only for authentication of users. It + is not recommended to use "real" TLS certificates, self-signed certificates with *sufficient keylength* are best-practice. +3. Mount your TLS certificate authority file into `/etc/rabbitmq/cacert.crt` and your TLS certificate / private key pair + into `/etc/tls/tls.crt` and `/etc/tls/tls.key`. diff --git a/docs/system-services-gateway.md b/docs/system-services-gateway.md index ae11a2b..fbe1ee8 100644 --- a/docs/system-services-gateway.md +++ b/docs/system-services-gateway.md @@ -4,12 +4,34 @@ author: Martin Weise # Gateway Service +## tl;dr + !!! debug "Debug Information" - * Ports: 9095/tcp - * Info: `http://:9095/actuator/info` - * Health: `http://:9095/actuator/health` - * Prometheus: `http://:9095/actuator/prometheus` + * Ports: 80/tcp, 443/tcp + +## Overview Provides a single point of access to the *application programming interface* (API) and configures a standard [NGINX](https://www.nginx.com/) reverse proxy for load balancing, SSL/TLS configuration. + +## Limitations + +(none) + +## Security + +1. Enable TLS encryption by downloading + the [`dbrepo.conf`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/raw/dev/dbrepo-gateway-service/dbrepo.conf) + and editing the *server* block to include your TLS certificate (with trust chain) `fullchain.pem` and TLS private key + `privkey.pem` (PEM-encoded). + + ```nginx + server { + listen 443 ssl; + server_name _; + ssl_certificate /etc/nginx/fullchain.pem; + ssl_certificate_key /etc/nginx/privkey.pem; + ... + } + ``` diff --git a/docs/system-services-metadata.md b/docs/system-services-metadata.md index 15e3cc7..c4a753c 100644 --- a/docs/system-services-metadata.md +++ b/docs/system-services-metadata.md @@ -4,6 +4,8 @@ author: Martin Weise # Metadata Service +## tl;dr + !!! debug "Debug Information" * Ports: 9099/tcp @@ -12,6 +14,8 @@ author: Martin Weise * Prometheus: `http://:9099/actuator/prometheus` * Swagger UI: `http://:9099/swagger-ui/index.html` <a href="/infrastructures/dbrepo/latest/swagger/metadata" target="_blank">:fontawesome-solid-square-up-right: view online</a> +## Overview + This microservice manages: * Databases @@ -37,3 +41,11 @@ Service. This microservice handles table operations inside a database that is managed by the Database Service. We use [Hibernate](https://hibernate.org/orm/) for schema and data ingest operations. + +## Limitations + +(none) + +## Security + +(none) diff --git a/docs/system-services-upload.md b/docs/system-services-upload.md index 40f9d3d..e1e370c 100644 --- a/docs/system-services-upload.md +++ b/docs/system-services-upload.md @@ -4,24 +4,24 @@ author: Martin Weise # Upload Service +## tl;dr + !!! debug "Debug Information" * Ports: 1080/tcp +## Overview + Upload files using one of the official the TUSd clients: * [NodeJS / JavaScript](https://github.com/tus/tus-js-client) * [Java](https://github.com/tus/tus-java-client) * [Python](https://github.com/tus/tus-py-client) -## Example (Python) +## Limitations + +(none) -Uploads a file `file.csv` in 200 byte chunks. +## Security -```python -#!/bin/env python3 -from tusclient import client -my_client = client.TusClient('http://localhost/api/upload/files') -uploader = my_client.uploader('/path/to/file.csv', chunk_size=200) -uploader.upload() -``` +(none) diff --git a/docs/usage-auth.md b/docs/usage-auth.md new file mode 100644 index 0000000..6b1967c --- /dev/null +++ b/docs/usage-auth.md @@ -0,0 +1,60 @@ +--- +author: Martin Weise +--- + +# Authentication Service + +## Obtain Access Token + +Access tokens are needed for almost all operations. + +=== "Terminal" + + ``` console + curl -X POST \ + -d "username=foo&password=bar&grant_type=password&client_id=dbrepo-client&scope=openid&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" \ + http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token + ``` + +=== "Python" + + ``` py + import requests + + auth = requests.post("http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token", data={ + "username": "foo", + "password": "bar", + "grant_type": "password", + "client_id": "dbrepo-client", + "scope": "openid", + "client_secret": "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" + }) + print(auth.json()["access_token"]) + ``` + +## Refresh Access Token + +Using the response from above, a new access token can be created via the refresh token provided. + +=== "Terminal" + + ``` console + curl -X POST \ + -d "grant_type=refresh_token&client_id=dbrepo-client&refresh_token=THE_REFRESH_TOKEN&client_secret=MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG" \ + http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token + ``` + +=== "Python" + + ``` py + import requests + + auth = requests.post("http://localhost/api/auth/realms/dbrepo/protocol/openid-connect/token", data={ + "grant_type": "refresh_token", + "client_id": "dbrepo-client", + "client_secret": "MUwRc7yfXSJwX8AdRMWaQC3Nep1VjwgG", + "refresh_token": "THE_REFRESH_TOKEN" + }) + print(auth.json()["access_token"]) + ``` + diff --git a/docs/usage-upload.md b/docs/usage-upload.md new file mode 100644 index 0000000..d01050c --- /dev/null +++ b/docs/usage-upload.md @@ -0,0 +1,17 @@ +--- +author: Martin Weise +--- + +# Upload Service + +Uploads a file `file.csv` in 200 byte chunks. + +=== "Python" + + ```python + #!/bin/env python3 + from tusclient import client + my_client = client.TusClient('http://localhost/api/upload/files') + uploader = my_client.uploader('/path/to/file.csv', chunk_size=200) + uploader.upload() + ``` diff --git a/misc/.$architecture.drawio.dtmp b/misc/.$architecture.drawio.dtmp new file mode 100644 index 0000000..d809737 --- /dev/null +++ b/misc/.$architecture.drawio.dtmp @@ -0,0 +1,2295 @@ +<mxfile host="Electron" modified="2023-10-09T07:59:29.614Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="Td1kgXHoYxqYNfTozfBp" version="21.1.2" type="device" pages="5"> + <diagram id="mvBsv1rP8O80Qe3yGnn_" name="docker-compose"> + <mxGraphModel dx="1509" dy="865" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="45LT9Xtm5jvL1Omwo4Uv-6" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;" parent="1" target="CohMdi7D_fRk0dSxzjYi-1" edge="1"> + <mxGeometry x="-0.028" relative="1" as="geometry"> + <mxPoint x="448" y="230" as="sourcePoint" /> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="S3Av5TdVFqS_SrXukbwN-2" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> + <mxGeometry x="433.5" y="146" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-39" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="S3Av5TdVFqS_SrXukbwN-1" edge="1"> + <mxGeometry x="0.0013" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="AQz-Vj6r_5Wor37pQVs6-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="SsHHCok0RUWS7ODwTELy-4" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-42" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="13tBXMPt0xomx7MP2VuM-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="O_ELZSFbvl3Butg3bv_j-1" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="415" y="346" /> + <mxPoint x="362" y="346" /> + <mxPoint x="362" y="440" /> + <mxPoint x="275" y="440" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-19" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-43"> + <mxGeometry x="-0.6602" relative="1" as="geometry"> + <mxPoint x="-3" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-44" value="TUSD" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> + <mxGeometry x="0.0034" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="hBEam5F8n4ZBPeoiEcWH-1" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="480" y="346" /> + <mxPoint x="538" y="346" /> + <mxPoint x="538" y="540" /> + <mxPoint x="625" y="540" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-18" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-45"> + <mxGeometry x="-0.7352" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="CohMdi7D_fRk0dSxzjYi-1" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="382.5" y="278" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="13tBXMPt0xomx7MP2VuM-1" value="Analyse Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="382.5" y="374" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="O_ELZSFbvl3Butg3bv_j-1" target="V1Wl26Vbpgnno5Lb-wtg-36" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="O_ELZSFbvl3Butg3bv_j-1" value="Authentication Service<br>(Keycloak)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="210" y="470" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="hBEam5F8n4ZBPeoiEcWH-1" target="V1Wl26Vbpgnno5Lb-wtg-34" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" target="V1Wl26Vbpgnno5Lb-wtg-32" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="689.9999999999998" y="586" as="sourcePoint" /> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-16" value="JDBC" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-48"> + <mxGeometry x="-0.2851" y="-2" relative="1" as="geometry"> + <mxPoint x="6" y="-2" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="hBEam5F8n4ZBPeoiEcWH-1" value="Metadata Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="560" y="566" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-15" value="Spring AMQP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;dashed=1;strokeWidth=1;dashPattern=1 1;fontSize=9;" edge="1" parent="1" source="AQz-Vj6r_5Wor37pQVs6-1" target="YJRAzF6yD4Hh-bAvO1PB-1"> + <mxGeometry x="0.54" relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="370" y="394" /> + <mxPoint x="370" y="540" /> + <mxPoint x="449" y="540" /> + </Array> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="AQz-Vj6r_5Wor37pQVs6-1" value="Broker Service<br>(RabbitMQ)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="210" y="374" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-49" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="SsHHCok0RUWS7ODwTELy-4" target="V1Wl26Vbpgnno5Lb-wtg-26" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="SsHHCok0RUWS7ODwTELy-4" value="Search Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="560" y="374" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="S3Av5TdVFqS_SrXukbwN-1" value="UI" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="210" y="278" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-26" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="740" y="362" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="V1Wl26Vbpgnno5Lb-wtg-32" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="850" y="586" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-32" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="740" y="554" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-33" value="metadata-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="722.5" y="618" width="85" height="20" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-34" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="600" y="660" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-35" value="data-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="582.5" y="724" width="85" height="20" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-36" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="250" y="550" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-37" value="auth-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="232.5" y="614" width="85" height="20" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-38" value="Upload Service<br>(tusd)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="560" y="278" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-3" value="metadata-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="810.5" y="600" width="108" height="20" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-6" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="850.5" y="572" width="28" height="28" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-7" value="search-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="810.5" y="408" width="108" height="20" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-8" target="V1Wl26Vbpgnno5Lb-wtg-26" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-8" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="850.5" y="380" width="28" height="28" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-10" value="data-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="571" y="794" width="108" height="20" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-11" target="V1Wl26Vbpgnno5Lb-wtg-35" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-11" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="611" y="766" width="28" height="28" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-15" target="V1Wl26Vbpgnno5Lb-wtg-37" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-15" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="261" y="656" width="28" height="28" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-16" value="auth-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="221" y="684" width="108" height="20" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-36" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-36" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="751" y="284" width="28" height="28" as="geometry" /> + </mxCell> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-39" value="upload-service-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="711" y="312" width="108" height="20" as="geometry" /> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-2" value="JDBC" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=9;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-1" target="V1Wl26Vbpgnno5Lb-wtg-34"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="448" y="582" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-1" value="Data Service" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="383.5" y="566" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-12" target="V1Wl26Vbpgnno5Lb-wtg-26"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="765" y="490" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-17" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="YJRAzF6yD4Hh-bAvO1PB-13"> + <mxGeometry x="0.3792" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-14" value="JDBC" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=9;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-12" target="V1Wl26Vbpgnno5Lb-wtg-32"> + <mxGeometry x="0.5121" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-12" value="Mirror Service" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="560" y="470" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-27" value="search-db" style="text;html=1;strokeColor=none;fillColor=default;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="722.5" y="437" width="85" height="17" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram name="Frontend" id="GYXS_N4ymJ7hX3zLKvDC"> + <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="583" pageHeight="413" math="0" shadow="0"> + <root> + <mxCell id="ihsuRJ9dWuDPEHVUeUyY-0" /> + <mxCell id="ihsuRJ9dWuDPEHVUeUyY-1" parent="ihsuRJ9dWuDPEHVUeUyY-0" /> + <mxCell id="IRxpwOfG2jHF0YoYJLJK-1" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#dae8fc;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="17" y="232" width="320" height="136" as="geometry" /> + </mxCell> + <mxCell id="IRxpwOfG2jHF0YoYJLJK-0" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=2;fillColor=#d5e8d4;strokeColor=#000000;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="17" y="20" width="320" height="204" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-0" value="UI" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="187" y="30" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-1" target="kLNLoM7m2o6o68vp3Wb9-0" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-1" value="Vue.js" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="187" y="100" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-2" target="kLNLoM7m2o6o68vp3Wb9-3" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-2" target="kLNLoM7m2o6o68vp3Wb9-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-2" target="kLNLoM7m2o6o68vp3Wb9-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-2" target="kLNLoM7m2o6o68vp3Wb9-10" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-2" value="Vuex<br>(state)" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="187" y="170" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-21" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-3" target="kLNLoM7m2o6o68vp3Wb9-4" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-3" value="Vuex Persist<br>Plugin" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="27" y="170" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-4" value="Local Storage" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#FFF2CC;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="62" y="60" width="60" height="80" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-10" target="kLNLoM7m2o6o68vp3Wb9-12" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-10" value="Node.js<br>(api client)" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="187" y="248" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-12" target="kLNLoM7m2o6o68vp3Wb9-13" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" source="kLNLoM7m2o6o68vp3Wb9-13" target="kLNLoM7m2o6o68vp3Wb9-18" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-20" value="refresh_token" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="kLNLoM7m2o6o68vp3Wb9-19" vertex="1" connectable="0"> + <mxGeometry x="0.5604" y="1" relative="1" as="geometry"> + <mxPoint x="-21" y="34" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-12" value="Axios<br>(+request interceptor)" style="rounded=1;whiteSpace=wrap;html=1;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="187" y="318" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-13" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="437" y="318" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="kLNLoM7m2o6o68vp3Wb9-18" value="Authentication Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="437" y="170" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="4DtipyiVSSVc0IyAwunU-1" value="client-side" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="23" y="27" width="60" height="20" as="geometry" /> + </mxCell> + <mxCell id="4DtipyiVSSVc0IyAwunU-2" value="server-side<br>(nuxt.js)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="24" y="243" width="64" height="20" as="geometry" /> + </mxCell> + <mxCell id="4DtipyiVSSVc0IyAwunU-4" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/thumb/e/e1/Google_Chrome_icon_%28February_2022%29.svg/2048px-Google_Chrome_icon_%28February_2022%29.svg.png;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="88" y="27" width="20" height="20" as="geometry" /> + </mxCell> + <mxCell id="4DtipyiVSSVc0IyAwunU-6" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Firefox_logo%2C_2019.svg/1200px-Firefox_logo%2C_2019.svg.png;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="113" y="26.599999999999966" width="20" height="20.8" as="geometry" /> + </mxCell> + <mxCell id="4DtipyiVSSVc0IyAwunU-7" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Nuxt_logo.svg/2560px-Nuxt_logo.svg.png;" parent="ihsuRJ9dWuDPEHVUeUyY-1" vertex="1"> + <mxGeometry x="92" y="243.15999999999997" width="28" height="20.84" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="L1JzLK7pEtbSKg_GzwHe" name="kubernetes"> + <mxGraphModel dx="3772" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="uhuFqILdIqehBGa5AEh--359" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=1;fillColor=none;dashed=1;" parent="1" vertex="1"> + <mxGeometry x="-2194" y="90" width="1680" height="1480" as="geometry" /> + </mxCell> + <mxCell id="o9QcCpmXlEoI0WZEIRtM-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="DhPzZC-KKjUQxFcC_TA6-2" target="OuYeyKodJbVhl-kyN8L6-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="OuYeyKodJbVhl-kyN8L6-1" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(251, 251, 251); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">Researcher</span>" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> + <mxGeometry x="-2319" y="967" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="_Pozg8uFO5aD6k6oWX_S-1" value="dbrepo" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ns" parent="1" vertex="1"> + <mxGeometry x="-2154" y="66" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--242" value="dbrepo-shared-claim<br>(ReadWriteMany)" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="1" vertex="1"> + <mxGeometry x="-1084" y="790" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--313" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-2060" y="1200" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--287" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--288" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--313" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--289" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--313" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--290" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--291" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--313" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--292" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--293" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--313" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--294" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--313" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--295" value="broker-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--296" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--297" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--313" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--314" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-2060" y="690" width="390" height="110" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--298" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--314" vertex="1"> + <mxGeometry width="390" height="110" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--299" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--314" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="39" as="sourcePoint" /> + <mxPoint x="121" y="39" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--310" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="uhuFqILdIqehBGa5AEh--314" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="212" y="39" as="targetPoint" /> + <mxPoint x="122" y="39" as="sourcePoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--303" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--314" vertex="1"> + <mxGeometry x="120" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--305" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;exitX=0.44;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="uhuFqILdIqehBGa5AEh--314" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="326" y="39" as="sourcePoint" /> + <mxPoint x="257" y="39" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--306" value="search-sync-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--314" vertex="1"> + <mxGeometry x="307" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--309" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--314" vertex="1"> + <mxGeometry x="210" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--312" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=cronjob" parent="uhuFqILdIqehBGa5AEh--314" vertex="1"> + <mxGeometry x="30" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--315" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-1554" y="120" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--276" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--277" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--315" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--278" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--315" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--279" value="upload-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--280" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--315" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--281" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--282" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--315" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--283" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--315" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--284" value="upload-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--285" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--286" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--315" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--316" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-948" y="877" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--265" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--266" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--316" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--267" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--316" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--268" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--269" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--316" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--270" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--271" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--316" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--272" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--316" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--273" value="auth-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--274" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--275" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--316" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--317" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-2060" y="434" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--254" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--255" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--317" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--256" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--317" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--257" value="semantic-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--258" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--317" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--259" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--260" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--317" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--261" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--317" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--262" value="semantic-<br style="border-color: var(--border-color);">secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--263" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--264" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--317" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--318" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-2060" y="877" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--243" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry y="1" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--244" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--318" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--245" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--318" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--246" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--247" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--318" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--248" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--249" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--318" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--250" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--318" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--251" value="ui-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--252" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(251, 251, 251); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">ui</span>" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--253" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--318" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--321" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-949" y="1200" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--67" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--68" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--76" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--78" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--79" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--80" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--81" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--70" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--143" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--224" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;dashed=1;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--321" source="uhuFqILdIqehBGa5AEh--71" target="uhuFqILdIqehBGa5AEh--81" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--71" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--144" value="data-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--145" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--159" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--160" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--161" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--321" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--146" value="data-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--72" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--142" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--69" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--321" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--322" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-1554" y="1200" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--202" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--205" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--206" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--210" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--211" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--212" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--216" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="56" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--228" value="search-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="307" y="133" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--229" value="search-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="307" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--230" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="264.0999999999999" as="sourcePoint" /> + <mxPoint x="308" y="263.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--231" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="156.0999999999999" as="sourcePoint" /> + <mxPoint x="308" y="155.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--220" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--217" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;jumpStyle=none;" parent="uhuFqILdIqehBGa5AEh--322" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="319" y="58" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--226" value="search-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="307" y="25" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--219" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--322" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--323" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-1554" y="441" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--182" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--183" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--184" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--185" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--186" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--187" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--188" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--201" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="uhuFqILdIqehBGa5AEh--323" source="uhuFqILdIqehBGa5AEh--183" target="uhuFqILdIqehBGa5AEh--188" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--189" value="metadata-db-<br>replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--190" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--225" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;" parent="uhuFqILdIqehBGa5AEh--323" source="uhuFqILdIqehBGa5AEh--191" target="uhuFqILdIqehBGa5AEh--188" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--191" value="metadata-db-<br>replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--192" value="metadata-db-<br>claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--193" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--194" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--195" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--196" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--323" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--197" value="metadata-db-<br style="border-color: var(--border-color);">secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--198" value="metadata-db-<br style="border-color: var(--border-color);">replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--199" value="metadata-db-<br style="border-color: var(--border-color);">replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--200" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--323" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--324" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-2239" y="812" width="90" height="370" as="geometry" /> + </mxCell> + <mxCell id="DhPzZC-KKjUQxFcC_TA6-2" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--324" vertex="1"> + <mxGeometry width="90" height="370" as="geometry" /> + </mxCell> + <mxCell id="DhPzZC-KKjUQxFcC_TA6-1" value="ingress" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="uhuFqILdIqehBGa5AEh--324" vertex="1"> + <mxGeometry x="20" y="18" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="DhPzZC-KKjUQxFcC_TA6-3" value="ingress-pid" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="uhuFqILdIqehBGa5AEh--324" vertex="1"> + <mxGeometry x="20" y="107" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="o9QcCpmXlEoI0WZEIRtM-1" value="ingress-root" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="uhuFqILdIqehBGa5AEh--324" vertex="1"> + <mxGeometry x="20" y="198" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="o9QcCpmXlEoI0WZEIRtM-2" value="ingress-api" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="uhuFqILdIqehBGa5AEh--324" vertex="1"> + <mxGeometry x="20" y="288" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--325" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-948" y="445" width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--232" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--325" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="237" y="3" as="sourcePoint" /> + <mxPoint x="281" y="3" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--233" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--325" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="327" y="3" as="sourcePoint" /> + <mxPoint x="380" y="57" as="targetPoint" /> + <Array as="points"> + <mxPoint x="355" y="3" /> + <mxPoint x="355" y="57" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--320" value="" style="group" parent="uhuFqILdIqehBGa5AEh--325" vertex="1" connectable="0"> + <mxGeometry width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--162" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--163" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--164" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--165" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--166" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--167" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--168" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--169" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--170" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--223" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;" parent="uhuFqILdIqehBGa5AEh--320" source="uhuFqILdIqehBGa5AEh--171" target="uhuFqILdIqehBGa5AEh--168" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--171" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--172" value="auth-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--173" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--174" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--175" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--176" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--320" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--177" value="auth-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--178" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--179" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--180" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--320" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--327" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--182" target="uhuFqILdIqehBGa5AEh--21" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--328" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--265" target="uhuFqILdIqehBGa5AEh--162" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--329" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--21" target="uhuFqILdIqehBGa5AEh--265" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--330" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;exitX=1;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--21" target="uhuFqILdIqehBGa5AEh--67" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1104" y="1044" /> + <mxPoint x="-1104" y="1365" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--331" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--21" target="uhuFqILdIqehBGa5AEh--202" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--334" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;strokeWidth=3;" parent="1" source="uhuFqILdIqehBGa5AEh--243" target="uhuFqILdIqehBGa5AEh--287" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--335" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" parent="1" source="uhuFqILdIqehBGa5AEh--254" target="uhuFqILdIqehBGa5AEh--21" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1614" y="600" /> + <mxPoint x="-1614" y="931" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--336" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--254" target="uhuFqILdIqehBGa5AEh--182" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--338" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;strokeWidth=3;entryX=1;entryY=0.75;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--21" target="uhuFqILdIqehBGa5AEh--276" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="-274" y="400" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-1124" y="931" /> + <mxPoint x="-1124" y="286" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--340" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--243" target="uhuFqILdIqehBGa5AEh--21" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--341" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;strokeWidth=3;" parent="1" source="uhuFqILdIqehBGa5AEh--298" target="uhuFqILdIqehBGa5AEh--21" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1624" y="745" /> + <mxPoint x="-1624" y="988" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--342" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;jumpStyle=arc;" parent="1" source="uhuFqILdIqehBGa5AEh--298" target="uhuFqILdIqehBGa5AEh--202" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1624" y="745" /> + <mxPoint x="-1624" y="1365" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--343" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;jumpStyle=arc;" parent="1" source="uhuFqILdIqehBGa5AEh--287" target="uhuFqILdIqehBGa5AEh--21" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1634" y="1255" /> + <mxPoint x="-1634" y="1150" /> + <mxPoint x="-1456" y="1150" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--349" value="" style="group" parent="1" vertex="1" connectable="0"> + <mxGeometry x="-1554" y="875" width="390" height="225" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--21" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry width="390" height="225" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--234" value="metadata-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry x="30" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--235" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--349" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="103" as="sourcePoint" /> + <mxPoint x="220" y="49" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="103" /> + <mxPoint x="195" y="49" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--236" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry x="120" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--240" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--349" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="98" as="sourcePoint" /> + <mxPoint x="249" y="42" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--241" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="uhuFqILdIqehBGa5AEh--349" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="109" as="sourcePoint" /> + <mxPoint x="252" y="159" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--239" value="metadata-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry x="307" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--237" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry x="220" y="133" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--238" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="uhuFqILdIqehBGa5AEh--349" vertex="1"> + <mxGeometry x="220" y="25" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--347" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="uhuFqILdIqehBGa5AEh--349" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="78" y="103" as="sourcePoint" /> + <mxPoint x="122" y="103" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--348" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="uhuFqILdIqehBGa5AEh--349" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="168" y="103" as="sourcePoint" /> + <mxPoint x="221" y="157" as="targetPoint" /> + <Array as="points"> + <mxPoint x="196" y="103" /> + <mxPoint x="196" y="157" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--356" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;startArrow=classic;startFill=1;" parent="1" source="uhuFqILdIqehBGa5AEh--276" target="uhuFqILdIqehBGa5AEh--242" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--357" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0.995;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;jumpStyle=arc;" parent="1" source="uhuFqILdIqehBGa5AEh--67" target="uhuFqILdIqehBGa5AEh--242" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="uhuFqILdIqehBGa5AEh--358" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.005;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;jumpStyle=arc;" parent="1" source="uhuFqILdIqehBGa5AEh--21" target="uhuFqILdIqehBGa5AEh--242" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="XQle7S94-AV5mvv9U2em-1" value="<b>Cluster</b> aks-dbrepo (Kubernetes 1.24.10, Standard_B4ms 4vCPUs 16GB RAM)<br><b>ResourceGroup</b> dbrepo" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="-2320" y="11" width="590" height="40" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-1" value="Namespace" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ns;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="29" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-2" value="<i>Ingress</i>" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="1" vertex="1"> + <mxGeometry x="-86" y="139" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-3" value="Deployment" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="249" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-4" value="Service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc;flipH=0;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="360" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-5" value="Pod" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod;flipH=0;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="470" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-7" value="Persistent Volume<br>Claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="580" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="43mXpWcvjyxaWf1V1qYn-8" value="Secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret;fontStyle=2" parent="1" vertex="1"> + <mxGeometry x="-86" y="690" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="RQzdi1eE1gEFqANnGBYO-1" value="<b>Helm Charts</b><br><br>dbrepo.azurecr.io/helm/dbrepo-core (generic open-source)<br>dbrepo.azure.io/helm/dbrepo-azure (uses dbrepo-core for Azure specific deployment)<br><br><b>Docker Images</b><br><br>dbrepo.azurecr.io/dbrepo/* (placeholder for service names)" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=top;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="-460" y="1460" width="430" height="148.5" as="geometry" /> + </mxCell> + <mxCell id="ZitV3d0DDrJxuNcBGxlc-1" value="dbrepo.azurecr.io
(Standard)" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://sysadminas.eu/assets/images/post16/ACR.png;" parent="1" vertex="1"> + <mxGeometry x="-136.76999999999998" y="1341.5" width="89.53" height="47" as="geometry" /> + </mxCell> + <mxCell id="ZitV3d0DDrJxuNcBGxlc-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="ZitV3d0DDrJxuNcBGxlc-4" target="ZitV3d0DDrJxuNcBGxlc-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="ZitV3d0DDrJxuNcBGxlc-3" value="Images, Helm Charts" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" parent="ZitV3d0DDrJxuNcBGxlc-2" vertex="1" connectable="0"> + <mxGeometry x="0.2037" y="-1" relative="1" as="geometry"> + <mxPoint x="-28" y="-1" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="ZitV3d0DDrJxuNcBGxlc-4" value="gitlab.phaidra.org
(Sourcecode, CI/CD)" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/png,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;" parent="1" vertex="1"> + <mxGeometry x="-460" y="1349.5" width="132.13" height="31" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram name="kubernetes-core" id="zCL3C3PTpr-oPp3sT7_2"> + <mxGraphModel dx="3772" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="1654" math="0" shadow="0"> + <root> + <mxCell id="9zPUeIaJexzoN4Df6JNy-0" /> + <mxCell id="9zPUeIaJexzoN4Df6JNy-1" parent="9zPUeIaJexzoN4Df6JNy-0" /> + <mxCell id="9zPUeIaJexzoN4Df6JNy-2" value="" style="rounded=1;whiteSpace=wrap;html=1;arcSize=1;fillColor=none;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-2024" y="90" width="1680" height="1480" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-4" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-2150" y="967" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-5" value="dbrepo" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ns" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-1984" y="66" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-6" value="dbrepo-shared-claim<br>(ReadWriteMany)" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-914" y="790" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-7" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1890" y="1200" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-8" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-9" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-7" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-10" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-7" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-11" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-12" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-7" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-13" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-14" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-7" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-15" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-7" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-16" value="broker-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-17" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-18" value="broker-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-7" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-19" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1890" y="690" width="390" height="110" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-20" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-19" vertex="1"> + <mxGeometry width="390" height="110" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-21" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-19" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="39" as="sourcePoint" /> + <mxPoint x="121" y="39" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-22" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="9zPUeIaJexzoN4Df6JNy-19" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="212" y="39" as="targetPoint" /> + <mxPoint x="122" y="39" as="sourcePoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-23" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-19" vertex="1"> + <mxGeometry x="120" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-24" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;exitX=0.44;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;" parent="9zPUeIaJexzoN4Df6JNy-19" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="326" y="39" as="sourcePoint" /> + <mxPoint x="257" y="39" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-25" value="search-sync-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-19" vertex="1"> + <mxGeometry x="307" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-26" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-19" vertex="1"> + <mxGeometry x="210" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-27" value="search-sync" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=cronjob" parent="9zPUeIaJexzoN4Df6JNy-19" vertex="1"> + <mxGeometry x="30" y="15" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-28" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1384" y="120" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-29" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-30" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-28" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-31" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-28" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-32" value="upload-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-33" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-28" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-34" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-35" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-28" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-36" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-28" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-37" value="upload-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-38" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-39" value="upload-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-28" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-40" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-778" y="877" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-41" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-42" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-40" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-43" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-40" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-44" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-45" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-40" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-46" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-47" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-40" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-48" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-40" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-49" value="auth-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-50" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-51" value="auth-service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-40" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-52" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1890" y="434" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-53" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-54" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-52" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-55" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-52" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-56" value="semantic-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-57" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-52" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-58" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-59" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-52" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-60" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-52" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-61" value="semantic-<br style="border-color: var(--border-color);">secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-62" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-63" value="semantic-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-52" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-64" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1890" y="877" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-65" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry y="1" width="390" height="221" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-66" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-64" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="99" as="sourcePoint" /> + <mxPoint x="121" y="99" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-67" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-64" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="153" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="153" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-68" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry x="30" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-69" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-64" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="99" as="sourcePoint" /> + <mxPoint x="220" y="45" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="99" /> + <mxPoint x="195" y="45" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-70" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry x="120" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-71" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-64" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="94" as="sourcePoint" /> + <mxPoint x="249" y="38" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-72" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-64" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="105" as="sourcePoint" /> + <mxPoint x="252" y="155" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-73" value="ui-secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry x="307" y="75" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-74" value="<span style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: center; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(251, 251, 251); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;">ui</span>" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry x="220" y="130" width="50" height="47" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-75" value="ui" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-64" vertex="1"> + <mxGeometry x="220" y="21" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-76" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-779" y="1200" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-77" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-78" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-79" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-80" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-81" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-82" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-83" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-84" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-85" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-86" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;dashed=1;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-76" source="9zPUeIaJexzoN4Df6JNy-87" target="9zPUeIaJexzoN4Df6JNy-83" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-87" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-88" value="data-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-89" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-90" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-91" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-92" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-76" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-93" value="data-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-94" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-95" value="data-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-96" value="data-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-76" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-97" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1384" y="1200" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-98" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-99" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-100" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-101" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-102" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-103" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-104" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="56" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-105" value="search-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="307" y="133" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-106" value="search-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="307" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-107" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="264.0999999999999" as="sourcePoint" /> + <mxPoint x="308" y="263.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-108" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="156.0999999999999" as="sourcePoint" /> + <mxPoint x="308" y="155.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-109" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-110" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;jumpStyle=none;" parent="9zPUeIaJexzoN4Df6JNy-97" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="319" y="58" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-111" value="search-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="307" y="25" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-112" value="search-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-97" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-113" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1384" y="441" width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-114" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry width="390" height="330" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-115" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-116" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-117" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-118" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-119" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-120" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-121" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="9zPUeIaJexzoN4Df6JNy-113" source="9zPUeIaJexzoN4Df6JNy-115" target="9zPUeIaJexzoN4Df6JNy-120" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-122" value="metadata-db-<br>replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-123" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-124" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-113" source="9zPUeIaJexzoN4Df6JNy-125" target="9zPUeIaJexzoN4Df6JNy-120" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-125" value="metadata-db-<br>replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-126" value="metadata-db-<br>claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-127" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-128" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-129" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-130" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-113" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-131" value="metadata-db-<br style="border-color: var(--border-color);">secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-132" value="metadata-db-<br style="border-color: var(--border-color);">replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-133" value="metadata-db-<br style="border-color: var(--border-color);">replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-134" value="metadata-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-113" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-135" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-2069" y="812" width="90" height="370" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-136" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-135" vertex="1"> + <mxGeometry width="90" height="370" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-137" value="ingress" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="9zPUeIaJexzoN4Df6JNy-135" vertex="1"> + <mxGeometry x="20" y="18" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-138" value="ingress-pid" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="9zPUeIaJexzoN4Df6JNy-135" vertex="1"> + <mxGeometry x="20" y="107" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-139" value="ingress-root" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="9zPUeIaJexzoN4Df6JNy-135" vertex="1"> + <mxGeometry x="20" y="198" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-140" value="ingress-api" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="9zPUeIaJexzoN4Df6JNy-135" vertex="1"> + <mxGeometry x="20" y="288" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-141" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-778" y="445" width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-142" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-141" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="237" y="3" as="sourcePoint" /> + <mxPoint x="281" y="3" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-143" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-141" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="327" y="3" as="sourcePoint" /> + <mxPoint x="380" y="57" as="targetPoint" /> + <Array as="points"> + <mxPoint x="355" y="3" /> + <mxPoint x="355" y="57" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-144" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-141" vertex="1" connectable="0"> + <mxGeometry width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-145" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry width="390" height="326" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-146" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="30" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-147" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="77" y="210" as="sourcePoint" /> + <mxPoint x="121" y="210" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-148" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="264" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="264" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-149" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="79" y="47" as="sourcePoint" /> + <mxPoint x="121" y="46.75999999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-150" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="47" as="sourcePoint" /> + <mxPoint x="222" y="47" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-151" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="120" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-152" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="30" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-153" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="210" as="sourcePoint" /> + <mxPoint x="220" y="156" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="210" /> + <mxPoint x="195" y="156" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-154" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;endArrow=none;endFill=0;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-144" source="9zPUeIaJexzoN4Df6JNy-155" target="9zPUeIaJexzoN4Df6JNy-151" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-155" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="120" y="186" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-156" value="auth-db-claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="307" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-157" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="268" y="47.09999999999991" as="sourcePoint" /> + <mxPoint x="308" y="46.8599999999999" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-158" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="325" y="145" as="sourcePoint" /> + <mxPoint x="245" y="48" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-159" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="323" y="156" as="sourcePoint" /> + <mxPoint x="252" y="156" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-160" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-144" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="320" y="173" as="sourcePoint" /> + <mxPoint x="248" y="265" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-161" value="auth-db-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="307" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-162" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="220" y="240" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-163" value="auth-db-replica" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="220" y="132" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-164" value="auth-db" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-144" vertex="1"> + <mxGeometry x="220" y="23" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-165" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-114" target="9zPUeIaJexzoN4Df6JNy-179" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-166" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-41" target="9zPUeIaJexzoN4Df6JNy-145" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-167" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-179" target="9zPUeIaJexzoN4Df6JNy-41" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-168" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;exitX=1;exitY=0.75;exitDx=0;exitDy=0;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-179" target="9zPUeIaJexzoN4Df6JNy-77" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-934" y="1044" /> + <mxPoint x="-934" y="1365" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-169" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-179" target="9zPUeIaJexzoN4Df6JNy-98" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-170" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;strokeWidth=3;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-65" target="9zPUeIaJexzoN4Df6JNy-8" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-171" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-53" target="9zPUeIaJexzoN4Df6JNy-179" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1444" y="600" /> + <mxPoint x="-1444" y="931" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-172" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-53" target="9zPUeIaJexzoN4Df6JNy-114" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-173" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;strokeWidth=3;entryX=1;entryY=0.75;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-179" target="9zPUeIaJexzoN4Df6JNy-29" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="-104" y="400" as="targetPoint" /> + <Array as="points"> + <mxPoint x="-954" y="931" /> + <mxPoint x="-954" y="286" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-174" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.75;exitDx=0;exitDy=0;entryX=0;entryY=0.75;entryDx=0;entryDy=0;strokeWidth=3;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-65" target="9zPUeIaJexzoN4Df6JNy-179" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-175" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;strokeWidth=3;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-20" target="9zPUeIaJexzoN4Df6JNy-179" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1454" y="745" /> + <mxPoint x="-1454" y="988" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-176" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeWidth=3;jumpStyle=arc;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-20" target="9zPUeIaJexzoN4Df6JNy-98" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1454" y="745" /> + <mxPoint x="-1454" y="1365" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-177" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.25;entryY=1;entryDx=0;entryDy=0;strokeWidth=3;jumpStyle=arc;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-8" target="9zPUeIaJexzoN4Df6JNy-179" edge="1"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="-1464" y="1255" /> + <mxPoint x="-1464" y="1150" /> + <mxPoint x="-1286" y="1150" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-178" value="" style="group" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1" connectable="0"> + <mxGeometry x="-1384" y="875" width="390" height="225" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-179" value="" style="rounded=0;whiteSpace=wrap;html=1;dashed=1;" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry width="390" height="225" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-180" value="metadata-<br>service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry x="30" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-181" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-178" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="167" y="103" as="sourcePoint" /> + <mxPoint x="220" y="49" as="targetPoint" /> + <Array as="points"> + <mxPoint x="195" y="103" /> + <mxPoint x="195" y="49" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-182" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry x="120" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-183" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-178" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="321" y="98" as="sourcePoint" /> + <mxPoint x="249" y="42" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-184" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;startArrow=none;startFill=0;endArrow=none;endFill=0;" parent="9zPUeIaJexzoN4Df6JNy-178" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="329" y="109" as="sourcePoint" /> + <mxPoint x="252" y="159" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-185" value="metadata-<br>secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry x="307" y="79" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-186" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry x="220" y="133" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-187" value="metadata-<br style="border-color: var(--border-color);">service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod" parent="9zPUeIaJexzoN4Df6JNy-178" vertex="1"> + <mxGeometry x="220" y="25" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-188" value="" style="endArrow=classic;html=1;rounded=0;strokeWidth=1;" parent="9zPUeIaJexzoN4Df6JNy-178" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="78" y="103" as="sourcePoint" /> + <mxPoint x="122" y="103" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-189" value="" style="endArrow=classic;html=1;rounded=1;strokeWidth=1;edgeStyle=orthogonalEdgeStyle;" parent="9zPUeIaJexzoN4Df6JNy-178" edge="1"> + <mxGeometry width="50" height="50" relative="1" as="geometry"> + <mxPoint x="168" y="103" as="sourcePoint" /> + <mxPoint x="221" y="157" as="targetPoint" /> + <Array as="points"> + <mxPoint x="196" y="103" /> + <mxPoint x="196" y="157" /> + </Array> + </mxGeometry> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-190" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.25;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;startArrow=classic;startFill=1;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-29" target="9zPUeIaJexzoN4Df6JNy-6" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-191" style="edgeStyle=orthogonalEdgeStyle;rounded=1;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.25;exitDx=0;exitDy=0;entryX=0.995;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;jumpStyle=arc;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-77" target="9zPUeIaJexzoN4Df6JNy-6" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-192" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=0;exitDx=0;exitDy=0;entryX=0.005;entryY=0.63;entryDx=0;entryDy=0;entryPerimeter=0;strokeWidth=3;fillColor=#e1d5e7;strokeColor=#9673a6;jumpStyle=arc;" parent="9zPUeIaJexzoN4Df6JNy-1" source="9zPUeIaJexzoN4Df6JNy-179" target="9zPUeIaJexzoN4Df6JNy-6" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-194" value="Namespace" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ns;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="90" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-195" value="<i>Ingress</i>" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=ing" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="200" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-196" value="Deployment" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=deploy;flipH=0;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="310" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-197" value="Service" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=svc;flipH=0;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="421" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-198" value="Pod" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pod;flipH=0;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="531" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-199" value="Persistent Volume<br>Claim" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=pvc;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="641" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="9zPUeIaJexzoN4Df6JNy-200" value="Secret" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=secret;fontStyle=2" parent="9zPUeIaJexzoN4Df6JNy-1" vertex="1"> + <mxGeometry x="-280" y="751" width="50" height="48" as="geometry" /> + </mxCell> + <mxCell id="pu2ujC6uqX3OPgaOAFM2-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="9zPUeIaJexzoN4Df6JNy-1" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="-2070" y="997" as="targetPoint" /> + <mxPoint x="-2120" y="997" as="sourcePoint" /> + </mxGeometry> + </mxCell> + </root> + </mxGraphModel> + </diagram> + <diagram id="DNBJDzVGt1bZ_wE9aRrb" name="Authentication (TU)"> + <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <root> + <mxCell id="0" /> + <mxCell id="1" parent="0" /> + <mxCell id="UK1E1MY9NPGJr35xhmfM-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="QHHrKqhJkxuvhbEd7n-v-1" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="618" y="253" as="sourcePoint" /> + <mxPoint x="677.5" y="221" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="0UriubutAV_ndhbAIQOG-1" target="lwbPPWB284nzco3shXtu-11" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="0UriubutAV_ndhbAIQOG-1" value="SATOSA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> + <mxGeometry x="447.5" y="414" width="170" height="210" as="geometry" /> + </mxCell> + <mxCell id="h4DClbYJ9orVhpn0rvY8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="OTtTGdUG0AnkBV5d_5uu-1" target="OTtTGdUG0AnkBV5d_5uu-2" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-1" value="SAML 2.0 IdP<br>(Frontend)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="467.5" y="444" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="h4DClbYJ9orVhpn0rvY8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="OTtTGdUG0AnkBV5d_5uu-2" target="OTtTGdUG0AnkBV5d_5uu-3" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-2" value="Middleware" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="467.5" y="504" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-3" value="SAML 2.0 SP<br>(Backend)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="467.5" y="564" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="h4DClbYJ9orVhpn0rvY8-2" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/.well-known/openid-configuration">JSON<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> + <mxGeometry x="307.5" y="181" width="70" height="90" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="h4DClbYJ9orVhpn0rvY8-3" target="OTtTGdUG0AnkBV5d_5uu-3" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="410" y="576" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="h4DClbYJ9orVhpn0rvY8-3" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/endpoint">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> + <mxGeometry x="307.5" y="539" width="70" height="90" as="geometry" /> + </mxCell> + <mxCell id="QHHrKqhJkxuvhbEd7n-v-1" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="677.5" y="248" width="50" height="64" as="geometry" /> + </mxCell> + <mxCell id="QHHrKqhJkxuvhbEd7n-v-2" value="auth-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="660" y="314" width="85" height="20" as="geometry" /> + </mxCell> + <mxCell id="hp2oGXdcphavrsRCR3EN-1" value="<b>EntityID&nbsp;</b>https://test.dbrepo.tuwien.ac.at/saml2/backend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> + <mxGeometry x="10" y="10" width="440" height="20" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;dashed=1;" parent="1" source="lwbPPWB284nzco3shXtu-11" target="h4DClbYJ9orVhpn0rvY8-3" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-11" value="TU SSO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> + <mxGeometry x="50" y="474" width="170" height="90" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-12" value="SimpleSAML" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> + <mxGeometry x="70" y="504" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="lwbPPWB284nzco3shXtu-18" target="OTtTGdUG0AnkBV5d_5uu-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-18" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/backend">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> + <mxGeometry x="307.5" y="419" width="70" height="90" as="geometry" /> + </mxCell> + <mxCell id="tOMRmRFzJHC1-SXyWV1O-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;" parent="1" edge="1"> + <mxGeometry x="-0.028" relative="1" as="geometry"> + <mxPoint x="532" y="126" as="sourcePoint" /> + <mxPoint as="offset" /> + <mxPoint x="532" y="174" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="tOMRmRFzJHC1-SXyWV1O-4" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> + <mxGeometry x="517.5" y="42" width="30" height="60" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-4" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/broker/saml/endpoint/descriptor">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> + <mxGeometry x="307.5" y="300" width="70" height="90" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-5" value="Keycloak" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> + <mxGeometry x="447.5" y="175" width="170" height="210" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-7" target="6Mvu0cpha-60HerBRlcp-10" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-7" value="OIDC IdP" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="467.5" y="205" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="0UriubutAV_ndhbAIQOG-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-10" value="SAML 2.0 SP<br>(Identity Broker)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> + <mxGeometry x="467.5" y="325" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="lwbPPWB284nzco3shXtu-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="h4DClbYJ9orVhpn0rvY8-2" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="467.5" y="226" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-4" target="6Mvu0cpha-60HerBRlcp-10" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-15" target="OTtTGdUG0AnkBV5d_5uu-1" edge="1"> + <mxGeometry relative="1" as="geometry" /> + </mxCell> + <mxCell id="6Mvu0cpha-60HerBRlcp-15" value="JSON<br>(Denylist)" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> + <mxGeometry x="667.5" y="419" width="70" height="90" as="geometry" /> + </mxCell> + </root> + </mxGraphModel> + </diagram> +</mxfile> diff --git a/misc/architecture.drawio b/misc/architecture.drawio index c5d7c59..f53478c 100644 --- a/misc/architecture.drawio +++ b/misc/architecture.drawio @@ -1,212 +1,6 @@ -<mxfile host="Electron" modified="2023-09-22T11:53:08.451Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="nPzW193kQO8dlamlRgj-" version="21.1.2" type="device" pages="6"> - <diagram name="Deployment" id="BS_rNRZWEkVqn4O3IFNu"> - <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="840" pageHeight="509" math="0" shadow="0"> - <root> - <mxCell id="0" /> - <mxCell id="1" parent="0" /> - <mxCell id="qJbSU32InUa3qXW1C_Xf-53" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=none;" parent="1" vertex="1"> - <mxGeometry y="27" width="840" height="420" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-84" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fontSize=10;fillColor=#DBEBFF;dashed=1;dashPattern=1 4;fillStyle=solid;" parent="1" vertex="1"> - <mxGeometry x="25" y="56" width="790" height="120" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-85" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=none;fontSize=10;fillColor=#D5E8D4;dashed=1;dashPattern=1 4;fillStyle=solid;" parent="1" vertex="1"> - <mxGeometry x="25" y="176" width="790" height="182" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-1" target="qJbSU32InUa3qXW1C_Xf-32" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-1" target="qJbSU32InUa3qXW1C_Xf-33" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-1" target="qJbSU32InUa3qXW1C_Xf-31" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-1" target="qJbSU32InUa3qXW1C_Xf-2" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.516;entryDx=0;entryDy=0;fontColor=#000000;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-1" target="qJbSU32InUa3qXW1C_Xf-29" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-1" value="Reverse Proxy<br>NGINX" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="355" y="67" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-2" value="UI<br>/" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="355" y="188" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-3" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;fontColor=#000000;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="355" y="248" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-5" value="Container Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="36" y="248" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-6" value="Table Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="666" y="188" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-7" value="Query Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="36" y="308" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-8" value="Database Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="516" y="188" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-9" value="Identifier Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="36" y="188" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-10" value="Authentication Service" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#B3B3B3;" parent="1" vertex="1"> - <mxGeometry x="196" y="248" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-11" value="Analyse Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="516" y="308" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-12" value="Search Database" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="666" y="248" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-13" value="Semantics Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="516" y="248" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-14" value="Metadata Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="196" y="309" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-15" value="Broker Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="196" y="188" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#000000;endArrow=none;endFill=0;dashed=1;dashPattern=1 4;" parent="1" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="737" y="392" as="targetPoint" /> - <mxPoint x="448" y="392" as="sourcePoint" /> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-29" value="Prometheus<br><font style="font-size: 10px;">/prometheus</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="196" y="66" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-75" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;endArrow=classic;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;dashed=1;dashPattern=1 2;" parent="1" source="qJbSU32InUa3qXW1C_Xf-30" target="qJbSU32InUa3qXW1C_Xf-29" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="101" y="122" /> - <mxPoint x="261" y="122" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-30" value="Alertmanager" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="36" y="66" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-31" value="cAdvisor<br><font style="font-size: 10px;">/cadvisor</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="516" y="67" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-32" value="Jupyterhub<br><font style="font-size: 10px;">/jupyterhub</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="516" y="127" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-33" value="Grafana<br><font style="font-size: 10px;">/grafana</font>" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#000000;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="196" y="127" width="130" height="40" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-67" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;endArrow=classic;endFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-44" target="qJbSU32InUa3qXW1C_Xf-62" edge="1"> - <mxGeometry relative="1" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontColor=#000000;endArrow=none;endFill=0;dashed=1;dashPattern=1 4;" parent="1" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="389" y="391.76" as="targetPoint" /> - <mxPoint x="79" y="391.76" as="sourcePoint" /> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-91" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontSize=10;fontColor=#000000;startArrow=classic;startFill=1;endArrow=classic;endFill=1;" parent="1" source="qJbSU32InUa3qXW1C_Xf-54" target="qJbSU32InUa3qXW1C_Xf-1" edge="1"> - <mxGeometry relative="1" as="geometry"> - <Array as="points"> - <mxPoint x="420" y="37" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-54" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="415" y="17" width="10" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-55" value="tcp 80, 443" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="426" width="66" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-74" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;fontColor=#000000;startArrow=classic;startFill=1;endArrow=classic;endFill=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="qJbSU32InUa3qXW1C_Xf-56" target="qJbSU32InUa3qXW1C_Xf-15" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="177" y="40" as="sourcePoint" /> - <Array as="points"> - <mxPoint x="177" y="37" /> - <mxPoint x="177" y="208" /> - </Array> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-56" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="173" y="17" width="10" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-57" value="tcp 5672" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="186" width="76" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-58" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="412" y="437" width="10" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-59" value="tcp 10000+" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="426" y="451" width="76" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-62" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="47" y="437" width="10" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-63" value="tcp 10000+" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="61" y="451" width="76" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-64" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#000000;fontColor=#000000;fillColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="758" y="437" width="10" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-65" value="tcp 10000+" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="769" y="451" width="71" height="20" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;endArrow=classic;endFill=1;" parent="1" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="417" y="408" as="sourcePoint" /> - <mxPoint x="417" y="437" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;fontColor=#000000;endArrow=classic;endFill=1;" parent="1" edge="1"> - <mxGeometry relative="1" as="geometry"> - <mxPoint x="763" y="408" as="sourcePoint" /> - <mxPoint x="763" y="437" as="targetPoint" /> - </mxGeometry> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-76" value="dbrepo1.ec.tuwien.ac.at" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="738" y="24" width="60" height="30" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-80" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://gitlab.developers.cam.ac.uk/uploads/-/system/project/avatar/4542/compose.png;" parent="1" vertex="1"> - <mxGeometry x="744.63" y="66" width="60.75" height="77" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-87" value="1)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="794" y="143" width="27" height="30" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-88" value="2)" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="794" y="324" width="27" height="30" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-89" value="1)&nbsp;https://gitlab.tuwien.ac.at/martin.weise/dbrepo-tuw/-/blob/master/docker-compose.dbrepo1.yml<br>2)&nbsp;https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/master/docker-compose.dbrepo1.yml" style="text;whiteSpace=wrap;html=1;fontSize=10;fontColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="12" y="471" width="520" height="29" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-25" value="" style="sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/SQL_Database_generic.svg;" parent="1" vertex="1"> - <mxGeometry x="398" y="367" width="38" height="50" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-44" value="" style="sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/SQL_Database_generic.svg;" parent="1" vertex="1"> - <mxGeometry x="33" y="367" width="38" height="50" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-49" value="" style="sketch=0;aspect=fixed;html=1;points=[];align=center;image;fontSize=12;image=img/lib/mscae/SQL_Database_generic.svg;" parent="1" vertex="1"> - <mxGeometry x="745" y="367" width="38" height="50" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-93" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://assets.stickpng.com/images/58480f12cef1014c0b5e4931.png;" parent="1" vertex="1"> - <mxGeometry x="61" y="400" width="34.67" height="23" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-94" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://assets.stickpng.com/images/58480f12cef1014c0b5e4931.png;" parent="1" vertex="1"> - <mxGeometry x="426" y="400" width="34.67" height="23" as="geometry" /> - </mxCell> - <mxCell id="qJbSU32InUa3qXW1C_Xf-95" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;aspect=fixed;imageAspect=0;image=https://assets.stickpng.com/images/58480f12cef1014c0b5e4931.png;" parent="1" vertex="1"> - <mxGeometry x="772.17" y="400" width="34.67" height="23" as="geometry" /> - </mxCell> - <mxCell id="EIwzJq8dkpXTqFd1RJj--1" value="User Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="355" y="308" width="130" height="40" as="geometry" /> - </mxCell> - </root> - </mxGraphModel> - </diagram> +<mxfile host="Electron" modified="2023-10-09T07:59:25.474Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.1.2 Chrome/106.0.5249.199 Electron/21.4.3 Safari/537.36" etag="6dOe4E5f3TKTd8nRObHK" version="21.1.2" type="device" pages="5"> <diagram id="mvBsv1rP8O80Qe3yGnn_" name="docker-compose"> - <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> + <mxGraphModel dx="1509" dy="865" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> @@ -219,8 +13,10 @@ <mxCell id="S3Av5TdVFqS_SrXukbwN-2" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> <mxGeometry x="433.5" y="146" width="30" height="60" as="geometry" /> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-39" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="S3Av5TdVFqS_SrXukbwN-1" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-39" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="S3Av5TdVFqS_SrXukbwN-1" edge="1"> + <mxGeometry x="0.0013" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-40" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="AQz-Vj6r_5Wor37pQVs6-1" edge="1"> <mxGeometry relative="1" as="geometry" /> @@ -228,7 +24,7 @@ <mxCell id="V1Wl26Vbpgnno5Lb-wtg-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="SsHHCok0RUWS7ODwTELy-4" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="13tBXMPt0xomx7MP2VuM-1" edge="1"> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-42" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="13tBXMPt0xomx7MP2VuM-1" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-43" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="O_ELZSFbvl3Butg3bv_j-1" edge="1"> @@ -241,19 +37,31 @@ </Array> </mxGeometry> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-44" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-19" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-43"> + <mxGeometry x="-0.6602" relative="1" as="geometry"> + <mxPoint x="-3" as="offset" /> + </mxGeometry> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-44" value="TUSD" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> + <mxGeometry x="0.0034" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-45" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="CohMdi7D_fRk0dSxzjYi-1" target="hBEam5F8n4ZBPeoiEcWH-1" edge="1"> <mxGeometry relative="1" as="geometry"> <Array as="points"> <mxPoint x="480" y="346" /> <mxPoint x="538" y="346" /> - <mxPoint x="538" y="440" /> - <mxPoint x="625" y="440" /> + <mxPoint x="538" y="540" /> + <mxPoint x="625" y="540" /> </Array> </mxGeometry> </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-18" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-45"> + <mxGeometry x="-0.7352" y="1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> + </mxCell> <mxCell id="CohMdi7D_fRk0dSxzjYi-1" value="Gateway Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="382.5" y="278" width="130" height="40" as="geometry" /> </mxCell> @@ -269,16 +77,33 @@ <mxCell id="V1Wl26Vbpgnno5Lb-wtg-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="hBEam5F8n4ZBPeoiEcWH-1" target="V1Wl26Vbpgnno5Lb-wtg-34" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="hBEam5F8n4ZBPeoiEcWH-1" target="V1Wl26Vbpgnno5Lb-wtg-32" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" target="V1Wl26Vbpgnno5Lb-wtg-32" edge="1"> + <mxGeometry relative="1" as="geometry"> + <mxPoint x="689.9999999999998" y="586" as="sourcePoint" /> + </mxGeometry> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-16" value="JDBC" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="V1Wl26Vbpgnno5Lb-wtg-48"> + <mxGeometry x="-0.2851" y="-2" relative="1" as="geometry"> + <mxPoint x="6" y="-2" as="offset" /> + </mxGeometry> </mxCell> <mxCell id="hBEam5F8n4ZBPeoiEcWH-1" value="Metadata Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> - <mxGeometry x="560" y="470" width="130" height="40" as="geometry" /> + <mxGeometry x="560" y="566" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-15" value="Spring AMQP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;jumpStyle=arc;dashed=1;strokeWidth=1;dashPattern=1 1;fontSize=9;" edge="1" parent="1" source="AQz-Vj6r_5Wor37pQVs6-1" target="YJRAzF6yD4Hh-bAvO1PB-1"> + <mxGeometry x="0.54" relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="370" y="394" /> + <mxPoint x="370" y="540" /> + <mxPoint x="449" y="540" /> + </Array> + <mxPoint as="offset" /> + </mxGeometry> </mxCell> <mxCell id="AQz-Vj6r_5Wor37pQVs6-1" value="Broker Service<br>(RabbitMQ)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="210" y="374" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;" parent="1" source="SsHHCok0RUWS7ODwTELy-4" target="V1Wl26Vbpgnno5Lb-wtg-26" edge="1"> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-49" value="HTTP" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;startArrow=classic;startFill=1;fontSize=9;" parent="1" source="SsHHCok0RUWS7ODwTELy-4" target="V1Wl26Vbpgnno5Lb-wtg-26" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="SsHHCok0RUWS7ODwTELy-4" value="Search Service" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> @@ -290,25 +115,22 @@ <mxCell id="V1Wl26Vbpgnno5Lb-wtg-26" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> <mxGeometry x="740" y="362" width="50" height="64" as="geometry" /> </mxCell> - <mxCell id="V1Wl26Vbpgnno5Lb-wtg-27" value="search-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="722.5" y="426" width="85" height="20" as="geometry" /> - </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="V1Wl26Vbpgnno5Lb-wtg-32" edge="1"> <mxGeometry relative="1" as="geometry"> - <mxPoint x="850" y="490" as="targetPoint" /> + <mxPoint x="850" y="586" as="targetPoint" /> </mxGeometry> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-32" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="740" y="458" width="50" height="64" as="geometry" /> + <mxGeometry x="740" y="554" width="50" height="64" as="geometry" /> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-33" value="metadata-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="722.5" y="522" width="85" height="20" as="geometry" /> + <mxGeometry x="722.5" y="618" width="85" height="20" as="geometry" /> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-34" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="600" y="550" width="50" height="64" as="geometry" /> + <mxGeometry x="600" y="660" width="50" height="64" as="geometry" /> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-35" value="data-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="582.5" y="614" width="85" height="20" as="geometry" /> + <mxGeometry x="582.5" y="724" width="85" height="20" as="geometry" /> </mxCell> <mxCell id="V1Wl26Vbpgnno5Lb-wtg-36" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> <mxGeometry x="250" y="550" width="50" height="64" as="geometry" /> @@ -320,10 +142,10 @@ <mxGeometry x="560" y="278" width="130" height="40" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-3" value="metadata-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="810.5" y="504" width="108" height="20" as="geometry" /> + <mxGeometry x="810.5" y="600" width="108" height="20" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-6" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="850.5" y="476" width="28" height="28" as="geometry" /> + <mxGeometry x="850.5" y="572" width="28" height="28" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-7" value="search-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> <mxGeometry x="810.5" y="408" width="108" height="20" as="geometry" /> @@ -335,13 +157,13 @@ <mxGeometry x="850.5" y="380" width="28" height="28" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-10" value="data-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="571" y="684" width="108" height="20" as="geometry" /> + <mxGeometry x="571" y="794" width="108" height="20" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-35" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-11" target="V1Wl26Vbpgnno5Lb-wtg-35" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-11" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="611" y="656" width="28" height="28" as="geometry" /> + <mxGeometry x="611" y="766" width="28" height="28" as="geometry" /> </mxCell> <mxCell id="A18w2Y2_AVEIFkgUy5Lv-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-15" target="V1Wl26Vbpgnno5Lb-wtg-37" edge="1"> <mxGeometry relative="1" as="geometry" /> @@ -352,32 +174,47 @@ <mxCell id="A18w2Y2_AVEIFkgUy5Lv-16" value="auth-db-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> <mxGeometry x="221" y="684" width="108" height="20" as="geometry" /> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-29" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-28" target="AQz-Vj6r_5Wor37pQVs6-1" edge="1"> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-36" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-28" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="121" y="380" width="28" height="28" as="geometry" /> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-36" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> + <mxGeometry x="751" y="284" width="28" height="28" as="geometry" /> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-30" value="broker-service-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="81" y="408" width="108" height="20" as="geometry" /> + <mxCell id="A18w2Y2_AVEIFkgUy5Lv-39" value="upload-service-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="711" y="312" width="108" height="20" as="geometry" /> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-33" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-31" target="O_ELZSFbvl3Butg3bv_j-1" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-2" value="JDBC" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=9;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-1" target="V1Wl26Vbpgnno5Lb-wtg-34"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="448" y="582" /> + </Array> + </mxGeometry> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-31" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="121" y="476" width="28" height="28" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-1" value="Data Service" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="383.5" y="566" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-32" value="authentication-service-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="81" y="510" width="108" height="20" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-12" target="V1Wl26Vbpgnno5Lb-wtg-26"> + <mxGeometry relative="1" as="geometry"> + <Array as="points"> + <mxPoint x="765" y="490" /> + </Array> + </mxGeometry> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-37" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="A18w2Y2_AVEIFkgUy5Lv-36" target="V1Wl26Vbpgnno5Lb-wtg-38" edge="1"> - <mxGeometry relative="1" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-17" value="HTTP" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];fontSize=9;" vertex="1" connectable="0" parent="YJRAzF6yD4Hh-bAvO1PB-13"> + <mxGeometry x="0.3792" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-36" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#e1d5e7;strokeColor=#000000;" parent="1" vertex="1"> - <mxGeometry x="751" y="284" width="28" height="28" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-14" value="JDBC" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=9;" edge="1" parent="1" source="YJRAzF6yD4Hh-bAvO1PB-12" target="V1Wl26Vbpgnno5Lb-wtg-32"> + <mxGeometry x="0.5121" y="-1" relative="1" as="geometry"> + <mxPoint as="offset" /> + </mxGeometry> </mxCell> - <mxCell id="A18w2Y2_AVEIFkgUy5Lv-39" value="upload-service-data" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> - <mxGeometry x="711" y="312" width="108" height="20" as="geometry" /> + <mxCell id="YJRAzF6yD4Hh-bAvO1PB-12" value="Mirror Service" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxGeometry x="560" y="470" width="130" height="40" as="geometry" /> + </mxCell> + <mxCell id="V1Wl26Vbpgnno5Lb-wtg-27" value="search-db" style="text;html=1;strokeColor=none;fillColor=default;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> + <mxGeometry x="722.5" y="437" width="85" height="17" as="geometry" /> </mxCell> </root> </mxGraphModel> @@ -2343,113 +2180,113 @@ </root> </mxGraphModel> </diagram> - <diagram id="DNBJDzVGt1bZ_wE9aRrb" name="Authentication"> + <diagram id="DNBJDzVGt1bZ_wE9aRrb" name="Authentication (TU)"> <mxGraphModel dx="1434" dy="822" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> - <mxCell id="UK1E1MY9NPGJr35xhmfM-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="QHHrKqhJkxuvhbEd7n-v-1"> + <mxCell id="UK1E1MY9NPGJr35xhmfM-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="QHHrKqhJkxuvhbEd7n-v-1" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="618" y="253" as="sourcePoint" /> <mxPoint x="677.5" y="221" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" edge="1" parent="1" source="0UriubutAV_ndhbAIQOG-1" target="lwbPPWB284nzco3shXtu-11"> + <mxCell id="6Mvu0cpha-60HerBRlcp-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" parent="1" source="0UriubutAV_ndhbAIQOG-1" target="lwbPPWB284nzco3shXtu-11" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="0UriubutAV_ndhbAIQOG-1" value="SATOSA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" vertex="1" parent="1"> + <mxCell id="0UriubutAV_ndhbAIQOG-1" value="SATOSA" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> <mxGeometry x="447.5" y="414" width="170" height="210" as="geometry" /> </mxCell> - <mxCell id="h4DClbYJ9orVhpn0rvY8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="OTtTGdUG0AnkBV5d_5uu-1" target="OTtTGdUG0AnkBV5d_5uu-2"> + <mxCell id="h4DClbYJ9orVhpn0rvY8-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="OTtTGdUG0AnkBV5d_5uu-1" target="OTtTGdUG0AnkBV5d_5uu-2" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="OTtTGdUG0AnkBV5d_5uu-1" value="SAML 2.0 IdP<br>(Frontend)" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-1" value="SAML 2.0 IdP<br>(Frontend)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="467.5" y="444" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="h4DClbYJ9orVhpn0rvY8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="OTtTGdUG0AnkBV5d_5uu-2" target="OTtTGdUG0AnkBV5d_5uu-3"> + <mxCell id="h4DClbYJ9orVhpn0rvY8-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="OTtTGdUG0AnkBV5d_5uu-2" target="OTtTGdUG0AnkBV5d_5uu-3" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="OTtTGdUG0AnkBV5d_5uu-2" value="Middleware" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-2" value="Middleware" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="467.5" y="504" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="OTtTGdUG0AnkBV5d_5uu-3" value="SAML 2.0 SP<br>(Backend)" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="OTtTGdUG0AnkBV5d_5uu-3" value="SAML 2.0 SP<br>(Backend)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="467.5" y="564" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="h4DClbYJ9orVhpn0rvY8-2" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/.well-known/openid-configuration">JSON<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> + <mxCell id="h4DClbYJ9orVhpn0rvY8-2" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/.well-known/openid-configuration">JSON<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> <mxGeometry x="307.5" y="181" width="70" height="90" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="h4DClbYJ9orVhpn0rvY8-3" target="OTtTGdUG0AnkBV5d_5uu-3"> + <mxCell id="lwbPPWB284nzco3shXtu-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="h4DClbYJ9orVhpn0rvY8-3" target="OTtTGdUG0AnkBV5d_5uu-3" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="410" y="576" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="h4DClbYJ9orVhpn0rvY8-3" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/endpoint">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> + <mxCell id="h4DClbYJ9orVhpn0rvY8-3" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/endpoint">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> <mxGeometry x="307.5" y="539" width="70" height="90" as="geometry" /> </mxCell> - <mxCell id="QHHrKqhJkxuvhbEd7n-v-1" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" vertex="1" parent="1"> + <mxCell id="QHHrKqhJkxuvhbEd7n-v-1" value="" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=8.600000000000023;fillColor=#dae8fc;strokeColor=#000000;" parent="1" vertex="1"> <mxGeometry x="677.5" y="248" width="50" height="64" as="geometry" /> </mxCell> - <mxCell id="QHHrKqhJkxuvhbEd7n-v-2" value="auth-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" vertex="1" parent="1"> + <mxCell id="QHHrKqhJkxuvhbEd7n-v-2" value="auth-db" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;spacing=-1;" parent="1" vertex="1"> <mxGeometry x="660" y="314" width="85" height="20" as="geometry" /> </mxCell> - <mxCell id="hp2oGXdcphavrsRCR3EN-1" value="<b>EntityID&nbsp;</b>https://test.dbrepo.tuwien.ac.at/saml2/backend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1"> + <mxCell id="hp2oGXdcphavrsRCR3EN-1" value="<b>EntityID&nbsp;</b>https://test.dbrepo.tuwien.ac.at/saml2/backend" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;" parent="1" vertex="1"> <mxGeometry x="10" y="10" width="440" height="20" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;dashed=1;" edge="1" parent="1" source="lwbPPWB284nzco3shXtu-11" target="h4DClbYJ9orVhpn0rvY8-3"> + <mxCell id="lwbPPWB284nzco3shXtu-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;dashed=1;" parent="1" source="lwbPPWB284nzco3shXtu-11" target="h4DClbYJ9orVhpn0rvY8-3" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-11" value="TU SSO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" vertex="1" parent="1"> + <mxCell id="lwbPPWB284nzco3shXtu-11" value="TU SSO" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> <mxGeometry x="50" y="474" width="170" height="90" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-12" value="SimpleSAML" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1"> + <mxCell id="lwbPPWB284nzco3shXtu-12" value="SimpleSAML" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1"> <mxGeometry x="70" y="504" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="lwbPPWB284nzco3shXtu-18" target="OTtTGdUG0AnkBV5d_5uu-1"> + <mxCell id="lwbPPWB284nzco3shXtu-19" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="lwbPPWB284nzco3shXtu-18" target="OTtTGdUG0AnkBV5d_5uu-1" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-18" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/backend">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> + <mxCell id="lwbPPWB284nzco3shXtu-18" value="<a href="https://test.dbrepo.tuwien.ac.at/saml2/backend">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> <mxGeometry x="307.5" y="419" width="70" height="90" as="geometry" /> </mxCell> - <mxCell id="tOMRmRFzJHC1-SXyWV1O-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;" edge="1" parent="1"> + <mxCell id="tOMRmRFzJHC1-SXyWV1O-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#000000;startArrow=classic;startFill=1;dashed=1;" parent="1" edge="1"> <mxGeometry x="-0.028" relative="1" as="geometry"> <mxPoint x="532" y="126" as="sourcePoint" /> <mxPoint as="offset" /> <mxPoint x="532" y="174" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="tOMRmRFzJHC1-SXyWV1O-4" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" vertex="1" parent="1"> + <mxCell id="tOMRmRFzJHC1-SXyWV1O-4" value="Researcher" style="shape=umlActor;verticalLabelPosition=bottom;verticalAlign=top;html=1;outlineConnect=0;" parent="1" vertex="1"> <mxGeometry x="517.5" y="42" width="30" height="60" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-4" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/broker/saml/endpoint/descriptor">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-4" value="<a href="https://test.dbrepo.tuwien.ac.at/api/auth/realms/dbrepo/broker/saml/endpoint/descriptor">XML<br>Metadata</a>" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> <mxGeometry x="307.5" y="300" width="70" height="90" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-5" value="Keycloak" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" vertex="1" parent="1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-5" value="Keycloak" style="rounded=0;whiteSpace=wrap;html=1;fillColor=default;dashed=1;verticalAlign=top;" parent="1" vertex="1"> <mxGeometry x="447.5" y="175" width="170" height="210" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="6Mvu0cpha-60HerBRlcp-7" target="6Mvu0cpha-60HerBRlcp-10"> + <mxCell id="6Mvu0cpha-60HerBRlcp-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-7" target="6Mvu0cpha-60HerBRlcp-10" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-7" value="OIDC IdP" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-7" value="OIDC IdP" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="467.5" y="205" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="0UriubutAV_ndhbAIQOG-1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-5" target="0UriubutAV_ndhbAIQOG-1" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-10" value="SAML 2.0 SP<br>(Identity Broker)" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-10" value="SAML 2.0 SP<br>(Identity Broker)" style="rounded=1;whiteSpace=wrap;html=1;" parent="1" vertex="1"> <mxGeometry x="467.5" y="325" width="130" height="40" as="geometry" /> </mxCell> - <mxCell id="lwbPPWB284nzco3shXtu-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="h4DClbYJ9orVhpn0rvY8-2"> + <mxCell id="lwbPPWB284nzco3shXtu-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="h4DClbYJ9orVhpn0rvY8-2" edge="1"> <mxGeometry relative="1" as="geometry"> <mxPoint x="467.5" y="226" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;endArrow=none;endFill=0;" edge="1" parent="1" source="6Mvu0cpha-60HerBRlcp-4" target="6Mvu0cpha-60HerBRlcp-10"> + <mxCell id="6Mvu0cpha-60HerBRlcp-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;startArrow=classic;startFill=1;endArrow=none;endFill=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-4" target="6Mvu0cpha-60HerBRlcp-10" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="6Mvu0cpha-60HerBRlcp-15" target="OTtTGdUG0AnkBV5d_5uu-1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" parent="1" source="6Mvu0cpha-60HerBRlcp-15" target="OTtTGdUG0AnkBV5d_5uu-1" edge="1"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="6Mvu0cpha-60HerBRlcp-15" value="JSON<br>(Denylist)" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1"> + <mxCell id="6Mvu0cpha-60HerBRlcp-15" value="JSON<br>(Denylist)" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;size=17;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" parent="1" vertex="1"> <mxGeometry x="667.5" y="419" width="70" height="90" as="geometry" /> </mxCell> </root> diff --git a/mkdocs.yml b/mkdocs.yml index 8ce2746..0b64037 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -28,8 +28,10 @@ nav: - User Interface: system-other-ui.md - Usage: - Overview: usage-overview.md + - Authentication Service: usage-auth.md - Broker Service: usage-broker.md - Identifier Service: usage-identifier.md + - Upload Service: usage-upload.md - publications.md - contact.md extra_css: -- GitLab