vitalibo / git-lfs

A set of modules for deploying custom Git LFS servers on different infrastructure providers

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Git LFS

Git Large File Storage (Git LFS) is an extension to Git that allows you to work with large files the same way as other text files but store it on separate remote servers. This project contains a set of modules for deploying custom Git LFS servers on different infrastructure providers. Implemented Batch API to request the ability to transfer LFS objects with the LFS server.

Inspired by Serverless Git LFS for Game Development - Alan Edwardes.

AWS

Module AWS allows you to use Amazon S3 as remote storage for large files. Service is deployable on a serverless stack (API Gateway + Lambda) that allows you to use Pay-As-You-Go (PAYG) pricing model. The high-level solution diagram you can find below.

architecture

SVG code
@aws.svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="802px" height="441px" viewBox="-0.5 -0.5 802 441" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-02-05T06:32:49.183Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15&quot; etag=&quot;NyaNM6wgb_J6YhGBZud5&quot; version=&quot;14.2.9&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;FNuXb-oD3RTOqwxP02e_&quot; name=&quot;aws&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs><linearGradient x1="0%" y1="100%" x2="0%" y2="0%" id="mx-gradient-f78e04-1-d05c17-1-s-0"><stop offset="0%" style="stop-color:#D05C17"/><stop offset="100%" style="stop-color:#F78E04"/></linearGradient><linearGradient x1="0%" y1="100%" x2="0%" y2="0%" id="mx-gradient-945df2-1-5a30b5-1-s-0"><stop offset="0%" style="stop-color:#5A30B5"/><stop offset="100%" style="stop-color:#945DF2"/></linearGradient><linearGradient x1="0%" y1="100%" x2="0%" y2="0%" id="mx-gradient-60a337-1-277116-1-s-0"><stop offset="0%" style="stop-color:#277116"/><stop offset="100%" style="stop-color:#60A337"/></linearGradient></defs><g><path d="M 110 220 L 164.95 220" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170.2 220 L 163.2 223.5 L 164.95 220 L 163.2 216.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 345 0 L 801 0 L 801 440 L 345 440 Z" fill="none" stroke="#232f3e" stroke-miterlimit="10" pointer-events="all"/><path d="M 351.09 7.18 C 351.01 7.18 350.93 7.19 350.85 7.19 C 350.5 7.19 350.15 7.23 349.81 7.32 C 349.53 7.39 349.25 7.49 348.98 7.62 C 348.9 7.65 348.84 7.7 348.79 7.76 C 348.75 7.83 348.74 7.91 348.74 7.99 L 348.74 8.32 C 348.74 8.46 348.79 8.53 348.88 8.53 L 348.99 8.53 L 349.22 8.44 C 349.45 8.35 349.69 8.27 349.94 8.21 C 350.17 8.16 350.41 8.13 350.65 8.13 C 351.04 8.09 351.43 8.2 351.74 8.44 C 351.97 8.74 352.09 9.12 352.05 9.5 L 352.05 9.99 C 351.79 9.93 351.54 9.88 351.29 9.84 C 351.05 9.81 350.81 9.79 350.57 9.79 C 349.98 9.76 349.4 9.94 348.94 10.31 C 348.54 10.65 348.32 11.15 348.34 11.68 C 348.31 12.15 348.49 12.62 348.82 12.96 C 349.18 13.29 349.66 13.46 350.15 13.44 C 350.91 13.45 351.63 13.11 352.11 12.51 C 352.18 12.66 352.24 12.79 352.31 12.91 C 352.38 13.02 352.46 13.12 352.55 13.21 C 352.6 13.27 352.67 13.31 352.75 13.31 C 352.81 13.31 352.87 13.29 352.92 13.25 L 353.34 12.97 C 353.41 12.93 353.46 12.86 353.47 12.77 C 353.47 12.72 353.45 12.67 353.42 12.62 C 353.34 12.47 353.26 12.31 353.21 12.14 C 353.15 11.95 353.12 11.75 353.13 11.55 L 353.14 9.37 C 353.2 8.77 353 8.18 352.59 7.74 C 352.17 7.39 351.64 7.19 351.09 7.18 Z M 364.89 7.19 C 364.78 7.19 364.68 7.19 364.57 7.2 C 364.29 7.2 364 7.24 363.73 7.31 C 363.47 7.38 363.23 7.5 363.01 7.66 C 362.82 7.81 362.66 7.99 362.54 8.21 C 362.42 8.43 362.35 8.67 362.36 8.92 C 362.36 9.27 362.48 9.61 362.69 9.89 C 362.97 10.22 363.34 10.46 363.76 10.56 L 364.72 10.87 C 364.97 10.93 365.2 11.05 365.39 11.22 C 365.51 11.35 365.58 11.51 365.57 11.69 C 365.58 11.94 365.45 12.18 365.23 12.31 C 364.93 12.48 364.6 12.56 364.26 12.54 C 363.99 12.54 363.72 12.51 363.46 12.45 C 363.22 12.4 362.98 12.32 362.75 12.22 L 362.58 12.15 C 362.54 12.14 362.5 12.14 362.46 12.15 C 362.36 12.15 362.31 12.22 362.31 12.36 L 362.31 12.69 C 362.31 12.76 362.32 12.82 362.35 12.89 C 362.4 12.97 362.47 13.03 362.56 13.07 C 362.8 13.19 363.06 13.28 363.32 13.34 C 363.66 13.41 364 13.45 364.35 13.45 L 364.33 13.46 C 364.66 13.45 364.98 13.4 365.29 13.3 C 365.55 13.22 365.8 13.09 366.01 12.92 C 366.21 12.77 366.38 12.57 366.49 12.34 C 366.61 12.1 366.67 11.83 366.66 11.56 C 366.67 11.23 366.56 10.9 366.36 10.63 C 366.09 10.32 365.73 10.09 365.33 9.99 L 364.39 9.69 C 364.13 9.61 363.88 9.49 363.67 9.32 C 363.54 9.2 363.47 9.03 363.47 8.85 C 363.46 8.61 363.58 8.38 363.79 8.25 C 364.06 8.11 364.36 8.05 364.67 8.06 C 365.11 8.06 365.55 8.14 365.96 8.32 C 366.04 8.37 366.12 8.4 366.21 8.41 C 366.31 8.41 366.36 8.34 366.36 8.19 L 366.36 7.88 C 366.37 7.8 366.35 7.72 366.31 7.66 C 366.25 7.59 366.18 7.54 366.11 7.49 L 365.83 7.38 L 365.45 7.27 L 365.01 7.2 C 364.97 7.2 364.93 7.19 364.89 7.19 Z M 361.02 7.36 C 360.94 7.35 360.86 7.38 360.79 7.42 C 360.72 7.5 360.68 7.59 360.66 7.69 L 359.51 12.14 L 358.47 7.71 C 358.45 7.61 358.41 7.52 358.34 7.44 C 358.26 7.39 358.17 7.37 358.07 7.38 L 357.54 7.38 C 357.44 7.37 357.35 7.39 357.27 7.44 C 357.2 7.51 357.15 7.61 357.14 7.71 L 356.09 12.14 L 354.97 7.7 C 354.95 7.6 354.91 7.51 354.84 7.44 C 354.76 7.39 354.67 7.36 354.58 7.37 L 353.92 7.37 C 353.81 7.37 353.76 7.43 353.76 7.54 C 353.77 7.63 353.79 7.72 353.82 7.81 L 355.38 12.95 C 355.4 13.05 355.45 13.14 355.52 13.21 C 355.6 13.26 355.69 13.29 355.78 13.28 L 356.36 13.26 C 356.46 13.27 356.55 13.25 356.63 13.19 C 356.7 13.12 356.74 13.03 356.76 12.93 L 357.79 8.64 L 358.82 12.93 C 358.83 13.03 358.88 13.12 358.95 13.19 C 359.03 13.25 359.12 13.27 359.21 13.26 L 359.79 13.26 C 359.88 13.27 359.97 13.25 360.04 13.2 C 360.11 13.13 360.16 13.03 360.18 12.94 L 361.79 7.79 C 361.84 7.72 361.84 7.63 361.84 7.63 C 361.84 7.59 361.84 7.56 361.84 7.52 C 361.84 7.48 361.82 7.43 361.79 7.4 C 361.76 7.37 361.72 7.35 361.67 7.36 L 361.05 7.36 C 361.04 7.36 361.03 7.36 361.02 7.36 Z M 350.65 10.62 C 350.7 10.62 350.75 10.62 350.8 10.62 L 351.43 10.62 C 351.64 10.64 351.85 10.67 352.06 10.71 L 352.06 11.01 C 352.07 11.21 352.05 11.4 352 11.59 C 351.96 11.75 351.88 11.9 351.77 12.01 C 351.61 12.21 351.39 12.36 351.14 12.44 C 350.91 12.52 350.67 12.56 350.43 12.56 C 350.18 12.6 349.93 12.53 349.73 12.37 C 349.55 12.18 349.46 11.92 349.49 11.66 C 349.47 11.36 349.59 11.08 349.81 10.89 C 350.06 10.72 350.35 10.62 350.65 10.62 Z M 366.04 14.72 C 365.34 14.73 364.51 14.89 363.88 15.33 C 363.69 15.46 363.72 15.63 363.94 15.63 C 364.64 15.54 366.21 15.35 366.5 15.71 C 366.78 16.06 366.19 17.54 365.94 18.21 C 365.86 18.41 366.04 18.49 366.21 18.34 C 367.39 17.36 367.72 15.3 367.46 15 C 367.32 14.85 366.74 14.71 366.04 14.72 Z M 347.65 15.1 C 347.5 15.12 347.42 15.3 347.58 15.44 C 350.29 17.89 353.82 19.23 357.48 19.21 C 360.37 19.22 363.2 18.36 365.59 16.74 C 365.95 16.47 365.63 16.07 365.26 16.23 C 362.87 17.24 360.3 17.76 357.71 17.77 C 354.23 17.78 350.82 16.87 347.81 15.14 C 347.75 15.11 347.69 15.1 347.65 15.1 Z M 345 0 L 370 0 L 370 25 L 345 25 Z" fill="#232f3e" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 424px; height: 1px; padding-top: 7px; margin-left: 377px;"><div style="box-sizing: border-box; font-size: 0; text-align: left; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #232F3E; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">AWS Cloud</div></div></div></foreignObject><text x="377" y="19" fill="#232F3E" font-family="Helvetica" font-size="12px">AWS Cloud</text></switch></g><path d="M 641 80 L 741 80 L 741 180 L 641 180 Z" fill="url(#mx-gradient-f78e04-1-d05c17-1-s-0)" stroke="none" pointer-events="all"/><path d="M 667.04 90 C 666.18 90 665.48 90.7 665.48 91.56 L 665.48 109.21 C 665.48 110.07 666.18 110.77 667.04 110.77 L 678.84 110.77 L 706.76 169.11 C 707.03 169.66 707.57 170 708.17 170 L 727.88 170 C 728.74 170 729.44 169.3 729.44 168.44 L 729.44 150.79 C 729.44 149.93 728.74 149.23 727.88 149.23 L 720.88 149.23 L 693.07 90.89 C 692.81 90.35 692.26 90 691.66 90 Z M 668.6 93.13 L 690.67 93.13 L 718.49 151.47 C 718.75 152.01 719.29 152.36 719.9 152.36 L 726.31 152.36 L 726.31 166.87 L 709.16 166.87 L 681.24 108.53 C 680.98 107.99 680.43 107.64 679.83 107.64 L 668.6 107.64 Z M 676 121.17 C 675.38 121.16 674.82 121.51 674.55 122.06 L 652.79 167.74 C 652.56 168.23 652.59 168.8 652.88 169.25 C 653.17 169.71 653.67 169.98 654.2 169.98 L 674.94 169.98 C 675.55 169.98 676.1 169.64 676.36 169.09 L 687.85 145.05 C 688.06 144.63 688.06 144.13 687.85 143.7 L 677.38 122.05 C 677.12 121.52 676.59 121.18 676 121.17 Z M 675.98 126.34 L 684.71 144.39 L 673.96 166.86 L 656.68 166.86 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 441 80 L 541 80 L 541 180 L 441 180 Z" fill="url(#mx-gradient-945df2-1-5a30b5-1-s-0)" stroke="none" pointer-events="all"/><path d="M 508.59 91.49 C 507.75 91.52 507.09 92.21 507.09 93.05 L 507.09 110.73 L 502.2 110.73 L 502.2 113.85 L 507.09 113.85 L 507.09 146.02 L 502.16 146.02 L 502.16 149.14 L 507.09 149.14 L 507.09 166.88 C 507.09 167.38 507.33 167.85 507.74 168.15 C 508.15 168.44 508.67 168.52 509.15 168.36 L 529.93 161.4 C 530.57 161.18 531 160.59 531 159.91 L 531 103.35 C 531 102.76 530.66 102.22 530.13 101.95 L 509.34 91.65 C 509.11 91.54 508.85 91.48 508.59 91.49 Z M 473.35 91.57 C 473.12 91.58 472.9 91.63 472.7 91.73 L 451.87 102.03 C 451.34 102.29 451 102.83 451 103.43 L 451 159.93 C 451 160.61 451.43 161.2 452.07 161.42 L 472.9 168.36 C 473.38 168.52 473.9 168.44 474.31 168.15 C 474.71 167.85 474.95 167.38 474.95 166.88 L 474.95 149.14 L 478.16 149.14 L 478.16 146.02 L 474.95 146.02 L 474.95 113.85 L 478.12 113.85 L 478.12 110.73 L 474.95 110.73 L 474.95 93.13 C 474.95 92.71 474.78 92.31 474.48 92.01 C 474.18 91.72 473.77 91.56 473.35 91.57 Z M 510.21 95.57 L 527.88 104.32 L 527.88 158.79 L 510.21 164.71 Z M 471.83 95.64 L 471.83 164.71 L 454.12 158.81 L 454.12 104.4 Z M 482.94 110.73 L 482.94 113.85 L 487.8 113.85 L 487.8 110.73 Z M 492.59 110.73 L 492.59 113.85 L 497.38 113.85 L 497.38 110.73 Z M 492.75 120 L 486.35 138.9 L 489.3 139.91 L 495.71 121 Z M 484.02 122.67 L 477.91 127.9 C 477.56 128.19 477.36 128.63 477.36 129.08 C 477.36 129.54 477.56 129.97 477.91 130.27 L 484.02 135.47 L 486.05 133.1 L 481.32 129.08 L 486.05 125.04 Z M 498.01 122.75 L 496 125.13 L 500.63 129.03 L 495.98 133.03 L 498.02 135.4 L 504.06 130.2 C 504.41 129.91 504.61 129.47 504.6 129.01 C 504.6 128.55 504.4 128.12 504.05 127.82 Z M 482.89 146.02 L 482.89 149.14 L 487.8 149.14 L 487.8 146.02 Z M 492.59 146.02 L 492.59 149.14 L 497.3 149.14 L 497.3 146.02 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 641 260 L 741 260 L 741 360 L 641 360 Z" fill="url(#mx-gradient-60a337-1-277116-1-s-0)" stroke="none" pointer-events="all"/><path d="M 688.67 270.04 C 680.38 270 672.23 271.26 665.79 273.23 C 662.35 274.29 659.39 275.54 657.13 276.97 C 654.86 278.4 653.16 280 652.66 282.11 C 652.63 282.24 652.61 282.38 652.62 282.52 L 652.62 282.52 C 652.62 282.52 652.62 282.52 652.62 282.52 C 652.62 282.57 652.62 282.62 652.63 282.68 C 652.64 282.95 652.68 283.22 652.74 283.47 L 660.69 341.54 C 660.69 341.58 660.7 341.62 660.71 341.66 C 661.1 343.44 662.52 344.62 664.24 345.58 C 665.97 346.55 668.15 347.33 670.62 347.97 C 675.56 349.26 681.65 349.96 687.2 349.94 C 694.28 350 700.64 349.4 705.66 348.28 C 710.69 347.15 714.44 345.65 716.3 343.03 C 716.44 342.82 716.54 342.59 716.57 342.34 L 720.09 317.27 C 720.9 317.47 721.71 317.65 722.49 317.79 C 723.9 318.04 725.21 318.18 726.45 317.94 C 727.07 317.82 727.7 317.6 728.25 317.15 C 728.79 316.7 729.2 315.99 729.32 315.27 C 729.34 315.19 729.34 315.11 729.35 315.04 C 729.39 312.88 727.83 311.44 726.17 310.14 C 724.75 309.02 723.06 308.03 721.49 307.25 L 724.94 282.61 C 724.97 282.41 724.96 282.21 724.91 282.01 C 724.38 279.85 722.61 278.27 720.33 276.88 C 718.06 275.49 715.14 274.31 711.87 273.31 C 705.32 271.32 697.32 270.1 690.33 270.06 L 690.33 270.06 C 689.77 270.05 689.22 270.04 688.67 270.04 Z M 688.67 273.16 C 689.2 273.16 689.73 273.18 690.26 273.19 L 690.26 273.19 C 690.27 273.19 690.28 273.19 690.29 273.19 C 696.94 273.22 704.75 274.41 710.96 276.3 C 714.07 277.25 716.78 278.37 718.71 279.55 C 720.51 280.64 721.47 281.76 721.77 282.57 C 721.5 283.46 720.7 284.43 719.18 285.41 C 717.44 286.53 714.88 287.57 711.82 288.4 C 705.68 290.08 697.52 291 689.52 291 C 689.51 291 689.5 291 689.49 291 C 682.11 291.14 673.4 290.32 666.65 288.65 C 663.28 287.82 660.39 286.76 658.46 285.61 C 656.83 284.63 656.03 283.7 655.8 282.87 L 655.78 282.69 C 656.03 281.92 656.96 280.76 658.79 279.61 C 660.71 278.4 663.45 277.21 666.7 276.22 C 672.8 274.35 680.7 273.12 688.66 273.16 Z M 721.05 287.91 L 717.49 313.3 C 716.65 313.04 715.83 312.8 715.08 312.57 C 708.45 310.23 698.67 306.05 692.3 302.92 C 692.3 302.9 692.3 302.88 692.3 302.86 C 692.3 300.9 690.67 299.27 688.71 299.27 C 686.75 299.27 685.12 300.9 685.12 302.86 C 685.12 304.83 686.75 306.45 688.71 306.45 C 689.53 306.45 690.28 306.17 690.89 305.7 C 697.42 308.92 707.23 313.11 714.06 315.53 C 714.09 315.54 714.12 315.54 714.14 315.55 C 715.01 315.81 716.01 316.11 717.05 316.43 L 713.55 341.37 C 712.54 342.62 709.52 344.22 704.97 345.24 C 700.27 346.3 694.1 346.89 687.2 346.83 C 687.19 346.83 687.19 346.83 687.18 346.83 C 681.91 346.85 676 346.15 671.39 344.96 C 669.09 344.36 667.12 343.63 665.76 342.87 C 664.41 342.11 663.83 341.35 663.75 341 L 656.51 288.08 C 656.62 288.15 656.74 288.22 656.86 288.29 C 659.23 289.71 662.34 290.8 665.9 291.68 C 673.02 293.44 681.88 294.27 689.53 294.12 C 697.76 294.12 706.11 293.2 712.64 291.41 C 715.9 290.52 718.71 289.42 720.87 288.03 C 720.93 287.99 720.99 287.95 721.05 287.91 Z M 688.71 302.39 C 688.99 302.39 689.18 302.59 689.18 302.86 C 689.18 303.14 688.99 303.33 688.71 303.33 C 688.44 303.33 688.24 303.14 688.24 302.86 C 688.24 302.59 688.44 302.39 688.71 302.39 Z M 721.03 310.54 C 722.17 311.16 723.32 311.87 724.25 312.6 C 725.51 313.6 726 314.52 726.08 314.81 C 726.02 314.83 726.02 314.85 725.87 314.88 C 725.32 314.98 724.26 314.94 723.03 314.72 C 722.24 314.59 721.39 314.39 720.52 314.16 Z" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="5" y="170" width="100" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 46.63 233.72 C 49.14 234.97 51.93 235.72 54.91 235.72 C 57.84 235.72 60.58 235 63.06 233.8 C 65.79 233.91 69.12 235.17 72.26 237.22 C 75.61 239.39 78.71 242.28 80.71 244.8 C 85.07 250.75 86.99 256.12 86.92 266.13 L 23.01 266.13 C 23.23 254.12 25.22 249.54 30.86 242.66 C 33.43 239.81 40.01 234.78 46.63 233.72 Z M 54.91 201.84 C 63.23 201.84 69.93 208.53 69.93 216.85 C 69.93 225.16 63.23 231.86 54.91 231.86 C 46.6 231.86 39.9 225.16 39.9 216.85 C 39.9 208.53 46.6 201.84 54.91 201.84 Z M 54.91 197.97 C 44.51 197.97 36.04 206.45 36.04 216.85 C 36.04 222.45 38.54 227.44 42.43 230.9 C 36 232.94 30.64 237.13 27.97 240.09 C 27.95 240.11 27.93 240.13 27.91 240.15 C 21.64 247.8 19.06 253.9 19.06 268.07 C 19.06 269.13 19.93 270 20.99 270 L 88.89 270 C 89.94 270 90.79 269.17 90.82 268.13 C 91.2 256.2 88.83 249.31 83.79 242.47 C 83.78 242.46 83.77 242.44 83.75 242.42 C 81.45 239.51 78.11 236.41 74.37 233.98 C 72.2 232.57 69.89 231.52 67.54 230.78 C 71.35 227.32 73.79 222.38 73.79 216.85 C 73.79 206.45 65.32 197.97 54.91 197.97 Z M 32.8 218.32 L 9.11 218.32 C 9.3 210.35 10.66 207.3 14.51 202.59 C 16.24 200.68 20.82 197.2 25.28 196.45 C 27.08 197.3 29.04 197.86 31.15 197.86 C 33.24 197.86 35.17 197.33 36.95 196.5 C 38.73 196.58 40.99 197.42 43.15 198.83 C 43.31 198.93 43.47 199.03 43.62 199.14 L 45.79 195.98 C 45.61 195.85 45.43 195.73 45.24 195.61 C 43.95 194.77 42.57 194.05 41.16 193.51 C 43.56 191 45.08 187.65 45.08 183.93 C 45.08 176.26 38.82 170 31.15 170 L 31.15 170 C 23.48 170 17.22 176.26 17.22 183.93 C 17.22 187.7 18.76 191.11 21.21 193.62 C 16.94 195.19 13.48 198 11.65 200.03 C 11.63 200.06 11.6 200.08 11.59 200.1 C 7.1 205.57 5.19 210.13 5.19 220.24 C 5.19 221.29 6.05 222.15 7.11 222.15 L 32.86 222.15 Z M 31.15 173.83 C 36.75 173.83 41.25 178.33 41.25 183.93 C 41.25 189.53 36.75 194.03 31.15 194.03 C 25.55 194.03 21.06 189.53 21.06 183.93 C 21.06 178.33 25.55 173.83 31.15 173.83 Z M 77.2 218.32 L 100.89 218.32 C 100.7 210.35 99.34 207.3 95.49 202.59 C 93.76 200.68 89.18 197.2 84.72 196.45 C 82.92 197.3 80.96 197.86 78.85 197.86 C 76.76 197.86 74.83 197.33 73.05 196.5 C 71.27 196.58 69.01 197.42 66.85 198.83 C 66.69 198.93 66.54 199.03 66.38 199.14 L 64.21 195.98 C 64.39 195.85 64.58 195.73 64.76 195.61 C 66.06 194.77 67.43 194.05 68.84 193.51 C 66.44 191 64.92 187.65 64.92 183.93 C 64.92 176.26 71.18 170 78.85 170 L 78.85 170 C 86.52 170 92.78 176.26 92.78 183.93 C 92.78 187.7 91.24 191.11 88.79 193.62 C 93.06 195.19 96.52 198 98.36 200.03 C 98.38 200.06 98.4 200.08 98.42 200.1 C 102.9 205.57 104.81 210.13 104.81 220.24 C 104.81 221.29 103.95 222.15 102.89 222.15 L 77.14 222.15 Z M 78.85 173.83 C 73.25 173.83 68.75 178.33 68.75 183.93 C 68.75 189.53 73.25 194.03 78.85 194.03 C 84.45 194.03 88.94 189.53 88.94 183.93 C 88.94 178.33 84.45 173.83 78.85 173.83 Z" fill="#232f3e" stroke="none" pointer-events="all"/><rect x="175" y="170" width="102.63" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 243.29 253.71 C 241.79 253.71 240.57 254.66 240.57 255.84 L 240.57 259.9 C 240.57 261.08 241.79 262.03 243.29 262.03 L 266.63 262.03 C 268.14 262.03 269.35 261.08 269.35 259.9 L 269.35 255.84 C 269.35 254.66 268.14 253.71 266.63 253.71 Z M 182.7 249.46 L 269.94 249.46 C 271.99 249.46 273.48 250.93 273.48 252.72 L 273.48 262.93 C 273.48 264.71 271.99 266.19 269.94 266.19 L 182.7 266.19 C 180.66 266.19 179.17 264.71 179.17 262.93 L 179.17 252.72 C 179.17 250.93 180.66 249.46 182.7 249.46 Z M 182.7 245.65 C 178.72 245.65 175.36 248.78 175.36 252.72 L 175.36 262.93 C 175.36 266.87 178.72 270 182.7 270 L 269.94 270 C 273.93 270 277.29 266.87 277.29 262.93 L 277.29 252.72 C 277.29 248.78 273.93 245.65 269.94 245.65 Z M 187.26 182 L 265.34 182 L 265.34 229.43 L 187.26 229.43 Z M 185.39 178.19 C 185.39 178.19 184.34 178.51 184.33 178.51 C 184.33 178.51 184.12 178.67 184.04 178.75 C 183.96 178.83 183.91 178.9 183.86 178.96 C 183.67 179.21 183.63 179.36 183.58 179.47 C 183.5 179.69 183.49 179.79 183.48 179.88 C 183.45 180.07 183.45 180.2 183.45 180.35 L 183.45 231.08 C 183.45 231.23 183.45 231.36 183.48 231.55 C 183.49 231.65 183.5 231.74 183.58 231.97 C 183.63 232.08 183.67 232.22 183.86 232.47 C 183.91 232.54 183.96 232.61 184.04 232.68 C 184.12 232.76 184.33 232.93 184.33 232.93 C 184.34 232.93 185.39 233.24 185.39 233.24 L 267.2 233.24 C 267.2 233.24 268.25 232.93 268.25 232.93 C 268.26 232.93 268.47 232.76 268.55 232.68 C 268.63 232.61 268.69 232.54 268.73 232.47 C 268.92 232.22 268.97 232.08 269.01 231.97 C 269.09 231.74 269.1 231.65 269.11 231.55 C 269.14 231.36 269.15 231.23 269.15 231.08 L 269.15 180.35 C 269.15 180.2 269.14 180.07 269.11 179.88 C 269.1 179.79 269.09 179.69 269.01 179.47 C 268.97 179.36 268.92 179.21 268.73 178.96 C 268.69 178.9 268.63 178.83 268.55 178.75 C 268.47 178.67 268.26 178.51 268.25 178.51 C 268.25 178.51 267.2 178.19 267.2 178.19 Z M 180.88 173.81 L 271.76 173.81 C 272.71 173.81 273.58 174.65 273.58 175.93 L 273.58 235.39 C 273.58 236.68 272.71 237.52 271.76 237.52 L 180.88 237.52 C 179.92 237.52 179.06 236.68 179.06 235.39 L 179.06 175.93 C 179.06 174.65 179.92 173.81 180.88 173.81 Z M 180.88 170 C 177.71 170 175.25 172.76 175.25 175.93 L 175.25 235.39 C 175.25 238.57 177.71 241.32 180.88 241.32 L 271.76 241.32 C 274.92 241.32 277.38 238.57 277.38 235.39 L 277.38 175.93 C 277.38 172.76 274.92 170 271.76 170 Z" fill="#232f3e" stroke="none" pointer-events="all"/><ellipse cx="137.5" cy="220" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 220px; margin-left: 126px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="138" y="224" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="651" y="180" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 187px; margin-left: 652px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">AWS Lambda</span></div></div></div></foreignObject><text x="691" y="199" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">AWS Lambda</text></switch></g><path d="M 691 390 L 691 400 Q 691 410 681 410 L 236.3 410 Q 226.3 410 226.3 400 L 226.32 306.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 301.12 L 229.82 308.12 L 226.32 306.37 L 222.82 308.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="656" y="360" width="70" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 68px; height: 1px; padding-top: 367px; margin-left: 657px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Amazon S3</span></div></div></div></foreignObject><text x="691" y="379" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Amazon S3</text></switch></g><rect x="431" y="180" width="120" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 187px; margin-left: 432px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Amazon API Gateway</span></div></div></div></foreignObject><text x="491" y="199" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Amazon API Gateway</text></switch></g><rect x="186.32" y="270" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 277px; margin-left: 187px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Git LFS client</span></div></div></div></foreignObject><text x="226" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Git LFS client</text></switch></g><rect x="20.66" y="270" width="68.68" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 67px; height: 1px; padding-top: 277px; margin-left: 22px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Users</span></div></div></div></foreignObject><text x="55" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Users</text></switch></g><path d="M 281.76 225.83 L 315 225.81 Q 325 225.8 325 235.8 L 325 300 Q 325 310 335 310 L 629.63 310" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 634.88 310 L 627.88 313.5 L 629.63 310 L 627.88 306.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 281.76 214.17 L 315 214.19 Q 325 214.2 325 204.2 L 325 151 Q 325 141 335 141 L 429.85 141" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 435.1 141 L 428.1 144.5 L 429.85 141 L 428.1 137.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="171.32" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 546.99 140.56 L 581 140.59 Q 591 140.6 601 140.79 L 629.08 141.32" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 634.33 141.42 L 627.27 144.79 L 629.08 141.32 L 627.4 137.79 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 435.78 119 L 236.3 119 Q 226.3 119 226.3 129 L 226.32 158.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 163.88 L 222.82 156.88 L 226.32 158.63 L 229.82 156.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="436" y="75" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 635.45 119.44 L 552.92 119.44" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 547.67 119.44 L 554.67 115.94 L 552.92 119.44 L 554.67 122.94 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="636" y="75" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="636" y="255" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><ellipse cx="367.5" cy="141.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 142px; margin-left: 356px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="368" y="145" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><ellipse cx="577.5" cy="140.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 141px; margin-left: 566px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="578" y="144" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="602.5" cy="119.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 120px; margin-left: 591px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="603" y="123" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><ellipse cx="327.5" cy="119.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 120px; margin-left: 316px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="328" y="123" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><ellipse cx="491" cy="310" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 310px; margin-left: 480px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="491" y="314" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><ellipse cx="491" cy="410.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 411px; margin-left: 480px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">7</div></div></div></foreignObject><text x="491" y="414" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">7</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%">Viewer does not support full SVG 1.1</text></a></switch></svg>
@aws.svg

When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTPS to Amazon API Gateway service which in turn proxies (3) request to AWS Lambda. In lambda function for each LFS object generated presigned URL for temporary write/read access to S3. After processing the result returned (4) to API Gateway that turn back (5) response to Git LFS client. Now Git LFS client ready for uploading (6) / downloading (7) objects to/from S3 using presigned URL.

Azure

Module Azure allows you to use Azure Blob Storage service as remote storage for large files. Azure Functions serverless computing platform is taken as a basis for deploying Git LFS application.

architecture

SVG code
@azure.svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="803px" height="442px" viewBox="-0.5 -0.5 803 442" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-02-05T07:39:43.360Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15&quot; etag=&quot;GTSR0XaWazRfCFRGGKCC&quot; version=&quot;14.2.9&quot; type=&quot;device&quot; pages=&quot;3&quot;&gt;&lt;diagram id=&quot;FNuXb-oD3RTOqwxP02e_&quot; name=&quot;aws&quot;&gt;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&lt;/diagram&gt;&lt;diagram id=&quot;ctsbIjmihBmBlaVoHj-y&quot; name=&quot;azure&quot;&gt;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&lt;/diagram&gt;&lt;diagram id=&quot;wN3V4-Zfqn46460bOeNg&quot; name=&quot;self&quot;&gt;7Vtbd9o4EP41nLN9gOMbvjwmIWl3m22zm027feoRIMCJbbmyCJBfv5It2RYSl7CYQIvzEEsa3Wa+Gc2MTMu+iufvMUgnf6IhjFqWMZy37F7LskzHcuk/VrMoagLbKyrGOBxyoqriPnyBvNLgtdNwCDOJkCAUkTCVKwcoSeCASHUAYzSTyUYokmdNwRgqFfcDEKm1X8MhmRS1vuVV9R9gOJ6ImU03KFpiIIj5TrIJGKJZrcq+btlXGCFSvMXzKxgx5gm+/Pj8d/IQ/YM/g5v+y3X2NBi/3LSLwW5e06XcAoYJ2XnomBjXL/CTG9+684e5v/gYu6AttkYWgl9wSNnHiwiTCRqjBETXVe0lRtNkCNmoBi1VNLcIpbTSpJWPkJAFxwKYEkSrJiSOeCvdBV78y/vnhW+s0OmKYm9eb+wteKlYK1vgkmg38IXTZWiKB3ANMwQ8AR5Dso7OK6VP1QaiGNJV0o4YRoCEz/LqAMfvuKSrZERfuJheITI+7jOIpnwmRYayhGaTkMD7FOR7n1Etl6UxCqPoCkUI03KCEibhjGD0BJcq+bQQEzjfgf8qu8Qo3WIYbl8sn5dnlbaawphMJE01GuKwu5nDaEqiMKEsEkaLMXqEEiKY1rJs+nfDZr0cYzAMYdXGGVpnfJ1cy/0hyCalRJkQQmribkEfRncoC0mIEtrWR4SguEZwEYVj1kCYZl4CXhrQtUC8hAK6dq6wpiXKfL9sSpClxUZH4Zyt4zJFIRvl+pkOlvFBqIVMWYd4PmaHSQfMMqczzSDOGsSPMM8CP4Gh4sfQ4cdoCj/eGT97xM8gCnN4NGeAgm0QZHVc+5Ag8hUQmQqK6DDUjYKvs/EUKobRNeBIRdwof1ZBSBFhYwJxZIHYltdRDwWrq4pD1O3/0LU1Ou1GDJZZChJJLO6PKXMJLwcF+y6YZzDu/2bTtdF90fkNxytfXesde2fMNJg02iMQh9Gi6EbHAnGaN9q2w0QKo2fINFNpkQfJck1kQ5hWOl9qKxbKGhOEYxDJzTPOTk17RL06iNt0w4MwGWtJKBJIO6TOR8KHMGrT540EgyQb0V6iP8WWIJghPJSHr3fvg8HTOHdt2kustRy/ZKjlBNV713gnzz6EA4RBYe6U6YdhlkaA8z5MmIGueBMhQOp9hJTp25j9fx8S2nZ7c89imcJkcYBQwBUYKQgVLWYL26zCivFt7jw1OzblfPnI/pmtsY6+5ni1mzKMpnNWxbMqrlPFh9zjPE3ts7sd192ocK7fcf1mdO7THySY+8no6+/fLoPHL3DyMPurrfM9XpEnyH27J0gGE+4NPk7jVHTm3sUueYR5SFgawewYhsPLRSbBNUR7lUpgBZFJqDIQomstCxF4G/IQMBF5LpeWinTBHcQh5TXE90JnctLCkRKJJ7Gokrg+/HJlq+lsBw9T6ukOrfAPlu7QQ08Nno4BeitSWHbgNw2eArZBEEiIdwxrPeLPsHudl7FFEH9aaTbfpW6dHOgeNNWm1277KLW7VLNuTcm2PlK6dZtgNmkPyqyOuV/N1Svk1vlx+00PDOeYIaX6Khst9wpgGRuAJWFj7y5L42DTHBPNXMbkXS8wBosaQZ6dzGoj37GKypp2fVN20q2gDtyN9JZrrKW3nLX09KVYcaUm5dZ31xxj85HHgr505RHF73BBX5Ab+4mJXDkfaFpqROR0XfXccpw9nFue8+WOWo1H89HoffY+fjG+tedtazOrViS4iytkSUEN2VRo3YJoKVVfBqL7yuUrKWLT93stNScfZwMAO3mvFIcZ7AyiaUYL32nQ/ZyPJLtFW/kzq+G4GhQSJLoHTBDrT509u4syCHKBsEfvSO6dxwdRLO2Czsm9c3JvbXKvBwiVinFV2K0jSPLtYLssj8XvtWcp46eYsqYS7NqzTaeCS/zc9jb3pzvsZrB/6IPONHzZ+/FU78fT2Oi9XE1rAbLFF0gnhge93LMFdWzi7wVVh1otgsP+lE3xPd+fAoFVsNrt5nwXw7L0KYMOK77m4mAvWNH7Rf/vC8PGEzzM9u58c1Dmdk7u5mBd/LdTbK4n9PVoPUwi6LhTuDtodyDnBEz3zdO3pvqV0mmz2PKCo+Ox7rg9h0TnkKgMiT4APKSNPcxM6olGRIEj6Z3lqXrXVBCk17rgrHVnrdv2gz8eEp6m7pmGe1y6J5K0Nd1T3YpT+PZ5J2HI/kfgKbI4bF5b/TGM5sr+55TF0h2cab21LNSARnPX/XPKwpL9ckucz28mCzXy6f4ysjDL67ajEYfqrrm/ijjK63BxfWBaTQmDFqvfOxefHVS/Grev/wM=&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 110 220 L 164.95 220" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170.2 220 L 163.2 223.5 L 164.95 220 L 163.2 216.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="5" y="170" width="100" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 46.63 233.72 C 49.14 234.97 51.93 235.72 54.91 235.72 C 57.84 235.72 60.58 235 63.06 233.8 C 65.79 233.91 69.12 235.17 72.26 237.22 C 75.61 239.39 78.71 242.28 80.71 244.8 C 85.07 250.75 86.99 256.12 86.92 266.13 L 23.01 266.13 C 23.23 254.12 25.22 249.54 30.86 242.66 C 33.43 239.81 40.01 234.78 46.63 233.72 Z M 54.91 201.84 C 63.23 201.84 69.93 208.53 69.93 216.85 C 69.93 225.16 63.23 231.86 54.91 231.86 C 46.6 231.86 39.9 225.16 39.9 216.85 C 39.9 208.53 46.6 201.84 54.91 201.84 Z M 54.91 197.97 C 44.51 197.97 36.04 206.45 36.04 216.85 C 36.04 222.45 38.54 227.44 42.43 230.9 C 36 232.94 30.64 237.13 27.97 240.09 C 27.95 240.11 27.93 240.13 27.91 240.15 C 21.64 247.8 19.06 253.9 19.06 268.07 C 19.06 269.13 19.93 270 20.99 270 L 88.89 270 C 89.94 270 90.79 269.17 90.82 268.13 C 91.2 256.2 88.83 249.31 83.79 242.47 C 83.78 242.46 83.77 242.44 83.75 242.42 C 81.45 239.51 78.11 236.41 74.37 233.98 C 72.2 232.57 69.89 231.52 67.54 230.78 C 71.35 227.32 73.79 222.38 73.79 216.85 C 73.79 206.45 65.32 197.97 54.91 197.97 Z M 32.8 218.32 L 9.11 218.32 C 9.3 210.35 10.66 207.3 14.51 202.59 C 16.24 200.68 20.82 197.2 25.28 196.45 C 27.08 197.3 29.04 197.86 31.15 197.86 C 33.24 197.86 35.17 197.33 36.95 196.5 C 38.73 196.58 40.99 197.42 43.15 198.83 C 43.31 198.93 43.47 199.03 43.62 199.14 L 45.79 195.98 C 45.61 195.85 45.43 195.73 45.24 195.61 C 43.95 194.77 42.57 194.05 41.16 193.51 C 43.56 191 45.08 187.65 45.08 183.93 C 45.08 176.26 38.82 170 31.15 170 L 31.15 170 C 23.48 170 17.22 176.26 17.22 183.93 C 17.22 187.7 18.76 191.11 21.21 193.62 C 16.94 195.19 13.48 198 11.65 200.03 C 11.63 200.06 11.6 200.08 11.59 200.1 C 7.1 205.57 5.19 210.13 5.19 220.24 C 5.19 221.29 6.05 222.15 7.11 222.15 L 32.86 222.15 Z M 31.15 173.83 C 36.75 173.83 41.25 178.33 41.25 183.93 C 41.25 189.53 36.75 194.03 31.15 194.03 C 25.55 194.03 21.06 189.53 21.06 183.93 C 21.06 178.33 25.55 173.83 31.15 173.83 Z M 77.2 218.32 L 100.89 218.32 C 100.7 210.35 99.34 207.3 95.49 202.59 C 93.76 200.68 89.18 197.2 84.72 196.45 C 82.92 197.3 80.96 197.86 78.85 197.86 C 76.76 197.86 74.83 197.33 73.05 196.5 C 71.27 196.58 69.01 197.42 66.85 198.83 C 66.69 198.93 66.54 199.03 66.38 199.14 L 64.21 195.98 C 64.39 195.85 64.58 195.73 64.76 195.61 C 66.06 194.77 67.43 194.05 68.84 193.51 C 66.44 191 64.92 187.65 64.92 183.93 C 64.92 176.26 71.18 170 78.85 170 L 78.85 170 C 86.52 170 92.78 176.26 92.78 183.93 C 92.78 187.7 91.24 191.11 88.79 193.62 C 93.06 195.19 96.52 198 98.36 200.03 C 98.38 200.06 98.4 200.08 98.42 200.1 C 102.9 205.57 104.81 210.13 104.81 220.24 C 104.81 221.29 103.95 222.15 102.89 222.15 L 77.14 222.15 Z M 78.85 173.83 C 73.25 173.83 68.75 178.33 68.75 183.93 C 68.75 189.53 73.25 194.03 78.85 194.03 C 84.45 194.03 88.94 189.53 88.94 183.93 C 88.94 178.33 84.45 173.83 78.85 173.83 Z" fill="#232f3e" stroke="none" pointer-events="all"/><rect x="175" y="170" width="102.63" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 243.29 253.71 C 241.79 253.71 240.57 254.66 240.57 255.84 L 240.57 259.9 C 240.57 261.08 241.79 262.03 243.29 262.03 L 266.63 262.03 C 268.14 262.03 269.35 261.08 269.35 259.9 L 269.35 255.84 C 269.35 254.66 268.14 253.71 266.63 253.71 Z M 182.7 249.46 L 269.94 249.46 C 271.99 249.46 273.48 250.93 273.48 252.72 L 273.48 262.93 C 273.48 264.71 271.99 266.19 269.94 266.19 L 182.7 266.19 C 180.66 266.19 179.17 264.71 179.17 262.93 L 179.17 252.72 C 179.17 250.93 180.66 249.46 182.7 249.46 Z M 182.7 245.65 C 178.72 245.65 175.36 248.78 175.36 252.72 L 175.36 262.93 C 175.36 266.87 178.72 270 182.7 270 L 269.94 270 C 273.93 270 277.29 266.87 277.29 262.93 L 277.29 252.72 C 277.29 248.78 273.93 245.65 269.94 245.65 Z M 187.26 182 L 265.34 182 L 265.34 229.43 L 187.26 229.43 Z M 185.39 178.19 C 185.39 178.19 184.34 178.51 184.33 178.51 C 184.33 178.51 184.12 178.67 184.04 178.75 C 183.96 178.83 183.91 178.9 183.86 178.96 C 183.67 179.21 183.63 179.36 183.58 179.47 C 183.5 179.69 183.49 179.79 183.48 179.88 C 183.45 180.07 183.45 180.2 183.45 180.35 L 183.45 231.08 C 183.45 231.23 183.45 231.36 183.48 231.55 C 183.49 231.65 183.5 231.74 183.58 231.97 C 183.63 232.08 183.67 232.22 183.86 232.47 C 183.91 232.54 183.96 232.61 184.04 232.68 C 184.12 232.76 184.33 232.93 184.33 232.93 C 184.34 232.93 185.39 233.24 185.39 233.24 L 267.2 233.24 C 267.2 233.24 268.25 232.93 268.25 232.93 C 268.26 232.93 268.47 232.76 268.55 232.68 C 268.63 232.61 268.69 232.54 268.73 232.47 C 268.92 232.22 268.97 232.08 269.01 231.97 C 269.09 231.74 269.1 231.65 269.11 231.55 C 269.14 231.36 269.15 231.23 269.15 231.08 L 269.15 180.35 C 269.15 180.2 269.14 180.07 269.11 179.88 C 269.1 179.79 269.09 179.69 269.01 179.47 C 268.97 179.36 268.92 179.21 268.73 178.96 C 268.69 178.9 268.63 178.83 268.55 178.75 C 268.47 178.67 268.26 178.51 268.25 178.51 C 268.25 178.51 267.2 178.19 267.2 178.19 Z M 180.88 173.81 L 271.76 173.81 C 272.71 173.81 273.58 174.65 273.58 175.93 L 273.58 235.39 C 273.58 236.68 272.71 237.52 271.76 237.52 L 180.88 237.52 C 179.92 237.52 179.06 236.68 179.06 235.39 L 179.06 175.93 C 179.06 174.65 179.92 173.81 180.88 173.81 Z M 180.88 170 C 177.71 170 175.25 172.76 175.25 175.93 L 175.25 235.39 C 175.25 238.57 177.71 241.32 180.88 241.32 L 271.76 241.32 C 274.92 241.32 277.38 238.57 277.38 235.39 L 277.38 175.93 C 277.38 172.76 274.92 170 271.76 170 Z" fill="#232f3e" stroke="none" pointer-events="all"/><ellipse cx="137.5" cy="220" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 220px; margin-left: 126px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="138" y="224" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="186.32" y="270" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 277px; margin-left: 187px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Git LFS client</span></div></div></div></foreignObject><text x="226" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Git LFS client</text></switch></g><rect x="20.66" y="270" width="68.68" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 67px; height: 1px; padding-top: 277px; margin-left: 22px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Users</span></div></div></div></foreignObject><text x="55" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Users</text></switch></g><path d="M 281.43 214.72 L 425.67 214.67 Q 435.67 214.67 435.67 204.67 L 435.67 144.67 Q 435.67 134.67 445.67 134.67 L 583.63 134.68" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 588.88 134.68 L 581.88 138.18 L 583.63 134.68 L 581.88 131.18 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 281.43 225.61 L 425.67 225.59 Q 435.67 225.58 435.67 235.58 L 435.67 295 Q 435.67 305 445.67 305 L 583.63 305" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 588.88 305 L 581.88 308.5 L 583.63 305 L 581.88 301.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="171.32" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 590 113.01 L 236.33 113 Q 226.33 113 226.33 123 L 226.32 158.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 163.88 L 222.82 156.88 L 226.32 158.63 L 229.82 156.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 589.45 327.33 L 236.33 327.33 Q 226.33 327.33 226.33 317.33 L 226.32 306.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 301.12 L 229.82 308.12 L 226.32 306.37 L 222.82 308.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="590" y="261" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="590" y="69.12" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="345" y="0" width="456" height="440" fill="none" stroke="#000000" pointer-events="all"/><image x="347.5" y="2.5" width="25" height="25" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOS42ODIwMDExMTM4OTE2IiBoZWlnaHQ9IjE1LjI0NDk5OTg4NTU1OTA4MiIgdmlld0JveD0iLTQuNzY4MzcxNTgyMDMxMjVlLTcgMCAxOS42ODIwMDExMTM4OTE2IDE1LjI0NDk5OTg4NTU1OTA4MiI+PHBhdGggZD0iTTkuMTA1IDE0LjQzbDQuNjQyLS44Mi4wNDMtLjAxLTIuMzg3LTIuODRhNDAzLjk0NSA0MDMuOTQ1IDAgMCAxLTIuMzg3LTIuODUzYzAtLjAxNCAyLjQ2NS02LjgwMiAyLjQ3OS02LjgyNi4wMDQtLjAwOCAxLjY4MiAyLjg4OCA0LjA2NiA3LjAybDQuMDkgNy4wOS4wMzEuMDU0LTcuNTg3LS4wMDEtNy41ODctLjAwMSA0LjU5Ny0uODEyek0wIDEzLjU2NmMwLS4wMDQgMS4xMjUtMS45NTcgMi41LTQuMzRMNSA0Ljg5M2wyLjkxMy0yLjQ0NUM5LjUxNSAxLjEwNCAxMC44My4wMDIgMTAuODM2IDBhLjUxMi41MTIgMCAwIDEtLjA0Ny4xMThMNy42MjUgNi45MDNsLTMuMTA3IDYuNjYzLTIuMjU5LjAwM2MtMS4yNDIuMDAyLTIuMjU5IDAtMi4yNTktLjAwNHoiIGZpbGw9IiMwMDg5ZDYiLz48L3N2Zz4=" preserveAspectRatio="none"/><rect x="354.13" y="0.5" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 8px; margin-left: 355px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Azure</span></div></div></div></foreignObject><text x="394" y="20" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Azure</text></switch></g><path d="M 645 198.24 L 645 254.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 645 259.88 L 641.5 252.88 L 645 254.63 L 648.5 252.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="605" y="168.24" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 175px; margin-left: 606px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Function Apps</span></div></div></div></foreignObject><text x="645" y="187" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Function Apps</text></switch></g><rect x="605" y="362" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 369px; margin-left: 606px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Blob Storage</span></div></div></div></foreignObject><text x="645" y="381" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Blob Storage</text></switch></g><ellipse cx="435.5" cy="177.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 178px; margin-left: 424px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="436" y="181" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><ellipse cx="435.5" cy="262.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 263px; margin-left: 424px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="436" y="266" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><ellipse cx="645" cy="227.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 228px; margin-left: 634px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="645" y="231" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="397.5" cy="112.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 113px; margin-left: 386px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="398" y="116" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><ellipse cx="397.5" cy="327.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 328px; margin-left: 386px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="398" y="331" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><image x="594.5" y="79.12" width="100" height="89" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwLjUwMDA2NjIyMDc2MDM0NTUgMC41IDg5Ljk5ODg3MDg0OTYwOTM4IDgwIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB3aWR0aD0iODkuOTk4ODcwODQ5NjA5MzgiIGhlaWdodD0iODAiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNODkuNDE5IDM3LjQyNGwtNC4zNTgtNC4yMDMtMTkuMzk4LTE4LjE2OWMtLjg0My0uODE0LTIuMTA5LS44MTQtMy4wOTMgMC0uODQzLjgxMy0xLjEyNSAyLjMwNSAwIDMuMTE5bDIwLjM4MiAxOS4yNTRjLjg0My44MTMuODQzIDIuMzA1IDAgMy4xMTlMNjIuMTQ5IDYwLjQ3NWMtLjg0NC44MTQtLjg0NCAyLjMwNSAwIDMuMTE5czIuMzkuNjc4IDMuMDkyIDBsMTkuMzk4LTE4LjU3NiA0Ljc3OS00LjQ3NWMuODQzLS44MTQuNzAzLTIuMzA1IDAtMy4xMTl6bS04MS45NSAzLjExOWMtLjg0My0uODE0LS44NDMtMi4zMDUgMC0zLjExOWwxOS45Ni0xOS4yNTRjMS4xMjQtLjgxNC44NDMtMi4zMDUgMC0zLjExOS0uOTg0LS44MTQtMi4yNDktLjgxNC0zLjA5MyAwTDQuOTM5IDMzLjIyMS41ODEgMzcuNDI0Yy0uNzAzLjgxMy0uODQzIDIuMzA1IDAgMy4xMTlsNC4zNTggNC43NDYuMTQxLjEzNiAxOS42NzkgMTguMTY5Yy43MDMuNjc4IDIuMjQ5LjgxNCAzLjA5MyAwcy44NDMtMi4zMDUgMC0zLjExOUw3LjQ2OSA0MC41NDN6bTYwLjAyMS0xMy41Nkg0OC42NTRMNjYuOTI4IDBoLTI3LjQxbC0xNC43NiA0MC4xMzYgMTcuOTkzLjEzNkwyOC42OTQgODB6IiBmaWxsPSIjMDA3OGQ3IiBzdHJva2U9Im5vbmUiLz48L3N5bWJvbD48L3N2Zz4=" preserveAspectRatio="none"/><image x="594.5" y="271" width="100.11" height="89" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwLjUgMC41IDkwIDgwIiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiB3aWR0aD0iOTAiIGhlaWdodD0iODAiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+" preserveAspectRatio="none"/></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%">Viewer does not support full SVG 1.1</text></a></switch></svg>
@azure.svg

When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTPS and triggered Azure Function. In function for each LFS object generated (3) shared access signature (SAS) URL for temporary write/read access to Azure Blob Storage. After received (4) response Git LFS client make uploading (5) / downloading (6) objects to/from Azure Blob Storage using SAS URL.

Google Cloud Platform (GCP)

Module GCP allow you to use Cloud Storage service as remote storage for large files. Application code is running on serverless stacks, namely use Cloud Functions computing engine.

architecture

SVG code
@gcp.svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="802px" height="441px" viewBox="-0.5 -0.5 802 441" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-02-06T17:35:57.709Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15&quot; etag=&quot;ew9QniQkmer2KtoRdi9D&quot; version=&quot;14.2.9&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;K-He2xBIfik6sUmOOIk2&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="345" y="0" width="456" height="440" fill="none" stroke="#000000" pointer-events="all"/><path d="M 621.17 340.9 C 617.76 340.9 614.49 339.02 612.79 335.5 L 592.77 299.49 C 590.96 296.35 591.24 292.7 592.76 290.08 L 612.96 254.06 C 614.67 250.78 617.73 249.1 620.84 249.1 L 661.39 249.1 C 664.4 249.1 667.39 250.63 669.18 253.7 L 689.3 289.69 C 691.73 293.48 690.9 297.52 689.52 299.77 L 669.51 335.55 C 668.17 338.45 665.15 340.9 661.26 340.9 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 658.28 340.9 L 624.26 305.92 L 629.68 297.63 L 624.26 292.8 L 658.14 284.12 L 683.62 310.34 L 669.51 335.55 C 668.19 338.45 665.15 340.9 661.26 340.9 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="590.96" y="249.1" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 652.42 290.16 C 653.34 290.16 653.99 289.36 653.99 288.41 C 653.99 287.05 653.19 286.57 652.46 286.57 C 651.21 286.57 650.59 287.38 650.59 288.32 C 650.59 289.41 651.36 290.16 652.42 290.16 Z M 624.9 293.11 C 624.47 293.11 623.92 292.64 623.92 292.16 L 623.92 284.94 C 623.92 284.11 624.43 283.82 625.36 283.82 L 657.18 283.82 C 657.94 283.82 658.44 283.99 658.44 285.08 L 658.44 291.75 C 658.44 292.49 658.04 293.11 657.17 293.11 Z M 652.33 303.43 C 653.29 303.43 654.07 302.51 654.07 301.61 C 654.07 300.58 653.47 299.83 652.36 299.83 C 651.32 299.83 650.57 300.45 650.57 301.63 C 650.57 302.47 651.29 303.43 652.33 303.43 Z M 625.23 306.23 C 624.4 306.23 623.92 305.78 623.92 305.12 L 623.92 298.07 C 623.92 297.4 624.36 296.94 625.22 296.94 L 656.88 296.94 C 658.01 296.94 658.44 297.26 658.44 298.35 L 658.44 304.49 C 658.44 305.6 658.02 306.23 656.99 306.23 Z" fill="#ffffff" stroke="none" pointer-events="all"/><rect x="603" y="340" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 347px; margin-left: 604px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Cloud Storage</span></div></div></div></foreignObject><text x="643" y="359" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Cloud Storage</text></switch></g><rect x="585" y="80" width="109" height="105" fill="none" stroke="none" pointer-events="all"/><rect x="585" y="240" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 110 220 L 164.95 220" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170.2 220 L 163.2 223.5 L 164.95 220 L 163.2 216.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="5" y="170" width="100" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 46.63 233.72 C 49.14 234.97 51.93 235.72 54.91 235.72 C 57.84 235.72 60.58 235 63.06 233.8 C 65.79 233.91 69.12 235.17 72.26 237.22 C 75.61 239.39 78.71 242.28 80.71 244.8 C 85.07 250.75 86.99 256.12 86.92 266.13 L 23.01 266.13 C 23.23 254.12 25.22 249.54 30.86 242.66 C 33.43 239.81 40.01 234.78 46.63 233.72 Z M 54.91 201.84 C 63.23 201.84 69.93 208.53 69.93 216.85 C 69.93 225.16 63.23 231.86 54.91 231.86 C 46.6 231.86 39.9 225.16 39.9 216.85 C 39.9 208.53 46.6 201.84 54.91 201.84 Z M 54.91 197.97 C 44.51 197.97 36.04 206.45 36.04 216.85 C 36.04 222.45 38.54 227.44 42.43 230.9 C 36 232.94 30.64 237.13 27.97 240.09 C 27.95 240.11 27.93 240.13 27.91 240.15 C 21.64 247.8 19.06 253.9 19.06 268.07 C 19.06 269.13 19.93 270 20.99 270 L 88.89 270 C 89.94 270 90.79 269.17 90.82 268.13 C 91.2 256.2 88.83 249.31 83.79 242.47 C 83.78 242.46 83.77 242.44 83.75 242.42 C 81.45 239.51 78.11 236.41 74.37 233.98 C 72.2 232.57 69.89 231.52 67.54 230.78 C 71.35 227.32 73.79 222.38 73.79 216.85 C 73.79 206.45 65.32 197.97 54.91 197.97 Z M 32.8 218.32 L 9.11 218.32 C 9.3 210.35 10.66 207.3 14.51 202.59 C 16.24 200.68 20.82 197.2 25.28 196.45 C 27.08 197.3 29.04 197.86 31.15 197.86 C 33.24 197.86 35.17 197.33 36.95 196.5 C 38.73 196.58 40.99 197.42 43.15 198.83 C 43.31 198.93 43.47 199.03 43.62 199.14 L 45.79 195.98 C 45.61 195.85 45.43 195.73 45.24 195.61 C 43.95 194.77 42.57 194.05 41.16 193.51 C 43.56 191 45.08 187.65 45.08 183.93 C 45.08 176.26 38.82 170 31.15 170 L 31.15 170 C 23.48 170 17.22 176.26 17.22 183.93 C 17.22 187.7 18.76 191.11 21.21 193.62 C 16.94 195.19 13.48 198 11.65 200.03 C 11.63 200.06 11.6 200.08 11.59 200.1 C 7.1 205.57 5.19 210.13 5.19 220.24 C 5.19 221.29 6.05 222.15 7.11 222.15 L 32.86 222.15 Z M 31.15 173.83 C 36.75 173.83 41.25 178.33 41.25 183.93 C 41.25 189.53 36.75 194.03 31.15 194.03 C 25.55 194.03 21.06 189.53 21.06 183.93 C 21.06 178.33 25.55 173.83 31.15 173.83 Z M 77.2 218.32 L 100.89 218.32 C 100.7 210.35 99.34 207.3 95.49 202.59 C 93.76 200.68 89.18 197.2 84.72 196.45 C 82.92 197.3 80.96 197.86 78.85 197.86 C 76.76 197.86 74.83 197.33 73.05 196.5 C 71.27 196.58 69.01 197.42 66.85 198.83 C 66.69 198.93 66.54 199.03 66.38 199.14 L 64.21 195.98 C 64.39 195.85 64.58 195.73 64.76 195.61 C 66.06 194.77 67.43 194.05 68.84 193.51 C 66.44 191 64.92 187.65 64.92 183.93 C 64.92 176.26 71.18 170 78.85 170 L 78.85 170 C 86.52 170 92.78 176.26 92.78 183.93 C 92.78 187.7 91.24 191.11 88.79 193.62 C 93.06 195.19 96.52 198 98.36 200.03 C 98.38 200.06 98.4 200.08 98.42 200.1 C 102.9 205.57 104.81 210.13 104.81 220.24 C 104.81 221.29 103.95 222.15 102.89 222.15 L 77.14 222.15 Z M 78.85 173.83 C 73.25 173.83 68.75 178.33 68.75 183.93 C 68.75 189.53 73.25 194.03 78.85 194.03 C 84.45 194.03 88.94 189.53 88.94 183.93 C 88.94 178.33 84.45 173.83 78.85 173.83 Z" fill="#232f3e" stroke="none" pointer-events="all"/><rect x="175" y="170" width="102.63" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 243.29 253.71 C 241.79 253.71 240.57 254.66 240.57 255.84 L 240.57 259.9 C 240.57 261.08 241.79 262.03 243.29 262.03 L 266.63 262.03 C 268.14 262.03 269.35 261.08 269.35 259.9 L 269.35 255.84 C 269.35 254.66 268.14 253.71 266.63 253.71 Z M 182.7 249.46 L 269.94 249.46 C 271.99 249.46 273.48 250.93 273.48 252.72 L 273.48 262.93 C 273.48 264.71 271.99 266.19 269.94 266.19 L 182.7 266.19 C 180.66 266.19 179.17 264.71 179.17 262.93 L 179.17 252.72 C 179.17 250.93 180.66 249.46 182.7 249.46 Z M 182.7 245.65 C 178.72 245.65 175.36 248.78 175.36 252.72 L 175.36 262.93 C 175.36 266.87 178.72 270 182.7 270 L 269.94 270 C 273.93 270 277.29 266.87 277.29 262.93 L 277.29 252.72 C 277.29 248.78 273.93 245.65 269.94 245.65 Z M 187.26 182 L 265.34 182 L 265.34 229.43 L 187.26 229.43 Z M 185.39 178.19 C 185.39 178.19 184.34 178.51 184.33 178.51 C 184.33 178.51 184.12 178.67 184.04 178.75 C 183.96 178.83 183.91 178.9 183.86 178.96 C 183.67 179.21 183.63 179.36 183.58 179.47 C 183.5 179.69 183.49 179.79 183.48 179.88 C 183.45 180.07 183.45 180.2 183.45 180.35 L 183.45 231.08 C 183.45 231.23 183.45 231.36 183.48 231.55 C 183.49 231.65 183.5 231.74 183.58 231.97 C 183.63 232.08 183.67 232.22 183.86 232.47 C 183.91 232.54 183.96 232.61 184.04 232.68 C 184.12 232.76 184.33 232.93 184.33 232.93 C 184.34 232.93 185.39 233.24 185.39 233.24 L 267.2 233.24 C 267.2 233.24 268.25 232.93 268.25 232.93 C 268.26 232.93 268.47 232.76 268.55 232.68 C 268.63 232.61 268.69 232.54 268.73 232.47 C 268.92 232.22 268.97 232.08 269.01 231.97 C 269.09 231.74 269.1 231.65 269.11 231.55 C 269.14 231.36 269.15 231.23 269.15 231.08 L 269.15 180.35 C 269.15 180.2 269.14 180.07 269.11 179.88 C 269.1 179.79 269.09 179.69 269.01 179.47 C 268.97 179.36 268.92 179.21 268.73 178.96 C 268.69 178.9 268.63 178.83 268.55 178.75 C 268.47 178.67 268.26 178.51 268.25 178.51 C 268.25 178.51 267.2 178.19 267.2 178.19 Z M 180.88 173.81 L 271.76 173.81 C 272.71 173.81 273.58 174.65 273.58 175.93 L 273.58 235.39 C 273.58 236.68 272.71 237.52 271.76 237.52 L 180.88 237.52 C 179.92 237.52 179.06 236.68 179.06 235.39 L 179.06 175.93 C 179.06 174.65 179.92 173.81 180.88 173.81 Z M 180.88 170 C 177.71 170 175.25 172.76 175.25 175.93 L 175.25 235.39 C 175.25 238.57 177.71 241.32 180.88 241.32 L 271.76 241.32 C 274.92 241.32 277.38 238.57 277.38 235.39 L 277.38 175.93 C 277.38 172.76 274.92 170 271.76 170 Z" fill="#232f3e" stroke="none" pointer-events="all"/><ellipse cx="137.5" cy="220" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 220px; margin-left: 126px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="138" y="224" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="186.32" y="270" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 277px; margin-left: 187px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Git LFS client</span></div></div></div></foreignObject><text x="226" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Git LFS client</text></switch></g><rect x="20.66" y="270" width="68.68" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 67px; height: 1px; padding-top: 277px; margin-left: 22px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Users</span></div></div></div></foreignObject><text x="55" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Users</text></switch></g><path d="M 281.32 208.45 L 423.2 208.5 Q 433.2 208.5 433.2 198.5 L 433.2 142.5 Q 433.2 132.5 443.2 132.5 L 578.63 132.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 583.88 132.5 L 576.88 136 L 578.63 132.5 L 576.88 129 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 281.32 231.22 L 423.2 231.2 Q 433.2 231.2 433.2 241.2 L 433.2 285 Q 433.2 295 443.2 295 L 578.63 295" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 583.88 295 L 576.88 298.5 L 578.63 295 L 576.88 291.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="171.32" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 621.17 178.4 C 617.76 178.4 614.49 176.52 612.79 173 L 592.77 136.99 C 590.96 133.85 591.24 130.2 592.76 127.58 L 612.96 91.56 C 614.67 88.28 617.73 86.6 620.84 86.6 L 661.39 86.6 C 664.4 86.6 667.39 88.13 669.18 91.2 L 689.3 127.19 C 691.73 130.98 690.9 135.02 689.52 137.27 L 669.51 173.05 C 668.17 175.95 665.15 178.4 661.26 178.4 Z" fill="#5184f3" stroke="none" pointer-events="all"/><path d="M 650.52 178.4 L 626 153.39 L 619.07 121.19 L 630.39 116.26 L 647.51 134.11 L 652.02 130.02 L 658.67 137.63 L 664.63 120.28 L 686.39 142.89 L 669.51 173.05 C 668.19 175.95 665.15 178.4 661.26 178.4 Z" fill-opacity="0.07" fill="#000000" stroke="none" pointer-events="all"/><rect x="590.96" y="86.6" width="0" height="0" fill="none" stroke="none" pointer-events="all"/><path d="M 656.35 153.32 L 651.84 148.75 L 658.19 142.18 L 658.19 122.76 L 651.87 116.31 L 656.39 111.72 L 664.67 120.28 L 664.67 144.74 Z M 649.92 135.8 C 648.1 135.8 646.84 134.26 646.84 132.51 C 646.84 130.73 648.04 129.25 649.97 129.25 C 651.77 129.25 652.95 130.47 652.95 132.5 C 652.95 134.58 651.55 135.8 649.92 135.8 Z M 641.42 135.75 C 639.34 135.75 637.97 134.41 637.97 132.5 C 637.97 130.66 639.33 129.4 641.28 129.4 C 643.43 129.4 644.37 130.74 644.37 132.64 C 644.37 134.02 642.96 135.75 641.42 135.75 Z M 632.41 135.75 C 630.85 135.75 629.33 134.38 629.33 132.48 C 629.33 130.8 630.64 129.29 632.61 129.29 C 634.45 129.29 635.49 130.81 635.49 132.56 C 635.49 134.27 634.25 135.75 632.41 135.75 Z M 626 153.39 L 617.74 144.71 L 617.74 120.28 L 626.08 111.65 L 630.39 116.26 L 624.11 122.75 L 624.11 142.24 L 630.49 148.75 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 357.96 23.04 L 353.6 15.51 L 357.99 8 L 366.79 8 L 371.17 15.52 L 366.78 23.04 Z" fill="#e2e2e2" stroke="none" pointer-events="all"/><path d="M 362.35 19.29 C 360.28 19.29 358.59 17.8 358.59 15.43 C 358.59 13.59 360.11 11.79 362.38 11.79 C 364.8 11.79 366.14 13.47 366.14 15.52 C 366.14 17.93 364.21 19.29 362.35 19.29 Z" fill="#ffffff" stroke="none" pointer-events="all"/><path d="M 363.89 28 L 356.33 28 C 355.35 28 354.75 27.54 354.45 26.89 L 348.39 16.48 C 348 15.87 348.08 15.11 348.39 14.54 L 350.72 10.55 L 357.96 23.04 L 366.78 23.04 Z" fill="#ffcf48" stroke="none" pointer-events="all"/><path d="M 368.67 28 L 363.89 28 L 371.17 15.52 L 366.79 8 L 372.58 8 L 376.36 14.54 C 376.73 15.16 376.75 15.8 376.38 16.49 L 370.39 26.77 C 370.01 27.46 369.55 28 368.67 28 Z" fill="#dc473a" stroke="none" pointer-events="all"/><path d="M 368.62 3.03 C 369.34 3.03 369.93 3.43 370.26 4.07 L 372.58 8 L 357.99 8 L 353.6 15.51 L 350.72 10.55 L 354.4 4.19 C 354.84 3.45 355.31 3 356.55 3.03 Z" fill="#528ff5" stroke="none" pointer-events="all"/><path d="M 639.5 80 L 639.5 70 Q 639.5 60 629.5 60 L 236.3 60 Q 226.3 60 226.3 70 L 226.32 158.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 163.88 L 222.82 156.88 L 226.32 158.63 L 229.82 156.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 643 370 L 643 380 Q 643 390 633 390 L 236.3 390 Q 226.3 390 226.3 380 L 226.32 306.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 301.12 L 229.82 308.12 L 226.32 306.37 L 222.82 308.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="597" y="177.5" width="92" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 90px; height: 1px; padding-top: 185px; margin-left: 598px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Cloud Functions</span></div></div></div></foreignObject><text x="643" y="197" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Cloud Functions</text></switch></g><ellipse cx="433.5" cy="262.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 263px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="434" y="266" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><ellipse cx="433.5" cy="177.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 178px; margin-left: 422px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="434" y="181" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><ellipse cx="397.5" cy="60.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 61px; margin-left: 386px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="398" y="64" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="397.5" cy="390.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 391px; margin-left: 386px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="398" y="394" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><rect x="379" y="5.5" width="150" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 148px; height: 1px; padding-top: 16px; margin-left: 380px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><b style="font-size: 14px ; text-align: left">Google </b><span style="font-size: 14px ; text-align: left">Cloud Platform</span></div></div></div></foreignObject><text x="454" y="19" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Google Cloud Platform</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%">Viewer does not support full SVG 1.1</text></a></switch></svg>
@gcp.svg

When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTPS and triggered Cloud Function. For each LFS object function create signed URL for temporary write/read access to Cloud Storage, and return it in responce (3). After received response Git LFS client make uploading (4) / downloading (5) objects to/from Cloud Storage using signed URLs.

Self-Hosted

Module self-hosted allows you to use external hard driver for storing large files. Module use Docker + Flask web-server for deploying service on the self-managed server, also you can run service locally.

architecture

SVG code
@self.svg
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="802px" height="441px" viewBox="-0.5 -0.5 802 441" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2021-02-05T14:57:38.147Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15&quot; etag=&quot;bVixzWBbnvbJyhdw1ZaW&quot; version=&quot;14.2.9&quot; type=&quot;device&quot; pages=&quot;3&quot;&gt;&lt;diagram id=&quot;FNuXb-oD3RTOqwxP02e_&quot; name=&quot;aws&quot;&gt;7Vxbc9o4GP01zGwfYCzLF3hMyGXbSWcym9npdl8yChbg1lisLQL0169kS7Z1CZcCAVrSTGJ9ulgcnfNJ+qSmBfuTxX2GpuPPJMJJy3WiRQvetFwXeG7AfnHLsrT0YFgaRlkciUK14Sn+gYXREdZZHOFcKUgJSWg8VY0DkqZ4QBUbyjIyV4sNSaK+dYpG2DA8DVBiWr/EER2X1q4b1vY/cTwayzeDoFfmTJAsLD5JPkYRmTdM8LYF+xkhtHyaLPo44eBJXMp6d2/kVh3LcEo3qfD144Kmn2b56+BzO/sr/Pfl26dl24Wic3QpPzGOGAAiSTI6JiOSouS2tl5nZJZGmDfrsFRd5oGQKTMCZvyGKV2K0UQzSphpTCeJyGU9zpb/iPpF4itPdHyZvFk0M2+WImV+ZIFCTmbZAK/6nJI7KBthuqqgWxbkKDReISC9x2SCWY9YgQwniMavKk2QYNuoKlcPCHsQY7LN+IiGX1EyE68yBkwdjvk4pvhpigo45kyUKvTDOEn6JCEZS6ck5cOZ04x8x5rxTahfcUbxYiU0Mtcvawjlu12Rntc6AlLmY0VDzoHQ7BlgXn15YoZ+QmaRgeuUxCktuuBfs2/Wqb7T8llOn6c6rq8Z9HSoGoCZ4m2oBj0dqgagNw+09wO9gw2DkVKad7T3O40Osm+m8xlN4pTxRDpazrZRhqKYUURjT4NwNj4OSUqFcwCuTAvgeavMVU7582Qx4rNKB81zrzNiPJ8Wr/zInL0195k9Pg/4YD6jhBrUbrmQ/bvjhLHpgDM7Zp7/KolHvH3Kvdk1EqkED4sW2SeJ09FDkbqBjui97RURyseVLPegJxg4iqCAnFkagvL8wBSU5x1KUN5672RVkVVJNjVZFWWqSilW8NzyBt1os4WmEZjFpDRMo81m8wN6bWCpDbTab6vwLQbq6mR5d2H31vEaeTdxxhqKC0WlfC7XxMHq3Dh+H4Q2OQ2LL53rUkgP6AUnjySPRfMvhFIyWau0AesVzrRpa43HQPm0hGMYL3g/7C4kw+VCoXQg1yxpcyUJmrxEaD+aDaQe5STomJoFjm0SdA6lWf+i2TPTbM/zb+7c7TTrX0Hn2v9tNIum8fMIUTxHy/0I1zs94QYX4Z6ZcAPnCsJwO+G6YQhA8NsIN4eHmWhh9+h6DdfrdSeCiW2Lzh9Z3LqtPznqFB4LZ7evuHRc4C06zXKc5fvhitw3SdfeOzpVuheq7JEqgyQuyLGXIFZvE7K4nQC+J19khKxBGGAwhrUTT3O8XUyQ0cJxfAcPTXZV84+VLsZw7QN8TwWfTY4dM4jo+ib00rZ/5G0hjyARoaFUGYHgvxkP7l8PSqSueNR49PIHZH3jixX20wurx8D9wJ85bg4Hvj1EkzhZltVYW2gyLTIh5Lv3MU5eMReckaM2khcC400Ad7rQ8sqO8ky2FpmgRM2eCzgt+QmmTIhtEQuzFmEjTNtxGhWDz/OdxuuLTJqhNB+yWrI+o5EsMCdZpDbfrP6CBt9HRdS7rUHret0KUNfr1c++80F9e4QHJEOlFzNeH8X5NEEC+zjlfrfGJiGINuvIUWZPI/67DCk/lEEEQQ1GtZIdZRFDqrxL63VqeNN9rJsCbd1k2ed0LXMhPJRrcz3TkW1xIsVx+pkTqUVMiwOp8gyKpb42curjKJ6Qp1H1KVZ9cFXVWnGKVbpPeZrIS5enUo84ixmGOHuSxBeV5bEo3xV8m02mEgt5fvMd08FYlK5mbbCKH2vPy+TZzdrzMiBWufs7LxNVH/ls31izaVOB52sEFBiWtTQOVt3Ywe/bwmYXv3/x+7Xfn6AfhBPhCZ6B2w+BKifLdjl8T7cPbNGti74u+jL1dfX4kf28F9Hek5ea561fYVVHue+jNVtk6qK1i9Yqrd3HfOn1cMd3MiKacvI6Y/ToQAZy9aVeP4KWwM27bmyALch3Ud1FdZXq/i5C3CcvNOh39KCBRVtBtxN031Fe0BIA3TJuoGykLRvtn7rp2ty8r9znm2EBGZQAHae4siPDEk7H9+Hq0ARLVK9p7Xx51t0wGOD2DhIMuMoyvtCrCohT7jdjBVAPG4sV2N2G5T3oaHQse7DXgAI0j3h+Xb56Xrg1XxvhNcdxW8pF8aC1OsRWpI4hgMNEw3YWAPS2EoAbgMMLQIJ6llfbu0FHCvh0rrfD3f4zx6FcSsMr9NRZrBes9grSA7S5C/A1F1C6mJVOYEdfZvVIe/Qq4aZepbtvr7IbzfxTplm7mi7q2WczlmnHOM4aeiknLXvn2nvQyj0pWrkb3Jc61fnA89VwOugdfzL4mXPUQ+vSV3XpbKhMYLp/78Du3+bqbTpVvIBKzx0k3D3aenM3CW9wj+1UJRycnoTldvpXgBOGR4cTmhOMZQ9+9pfmYKht5ryegfy7XpmDJo0tG5Wzx93v6rh3j4u73NQ3cLesCc4e90A76HHlpHg03M3AhmXHdPa4Q+icGO7QwD34BXH3erCjMt4DR78W7ZnXosPfAnsfHMzLs2T912HKqGv9N3bg7f8=&lt;/diagram&gt;&lt;diagram id=&quot;ctsbIjmihBmBlaVoHj-y&quot; name=&quot;azure&quot;&gt;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&lt;/diagram&gt;&lt;diagram id=&quot;wN3V4-Zfqn46460bOeNg&quot; name=&quot;self&quot;&gt;7Vtbd9o4EP41nLN9gCNf8OUxhCTdJttmN03aPPUIEODEtlxZ3PLrV7Lli5ADJMFAE8hDrNHVM9+MRp+gYZwG8wsCo/E/eID8hg4G84bRbei6ZuoW+8cli1TiGnYqGBFvIBoVghvvCQkhENKJN0Cx1JBi7FMvkoV9HIaoTyUZJATP5GZD7MuzRnCEFMFNH/qq9Ic3oONU6uh2If+MvNE4m1mz3LQmgFlj8SbxGA7wrCQyzhrGKcGYpk/B/BT5XHmZXn5/+y+89b+Tb/C893QWP/ZHT+fNdLDzl3TJX4GgkL566ICCsyf01QqurPnt3FlcBhZsZq9GF5m+0ICpTxQxoWM8wiH0zwpph+BJOEB8VMBKRZsrjCMm1JjwAVG6EFiAE4qZaEwDX9SytyCLn6J/UrjnhVY7K3bn5cruQpQ2VINQV4wnpI9WvHuGRkhGiK5qJ6DCNVPClNDyBcIBYqtkDQjyIfWmMvCgwO8ob1fYiD0IM73AZGLcKfQnYibFhrKFZmOPopsIJsqYMS+XrTH0fP8U+5iwcohDbuGYEvyIloQv0/4UEYrmK9WV1bbTHiK+6I4ozwpv1bJgMpY8FdSkYWu9hvGE+l7IVJQFLa7oIQ5pprSGbrC/cz5rZ0TgwENFnVBoWfHl5pXaH8B4nFuUK9djIe4K9pB/jWOPejhkdT1MKQ5KDU58b8QrKPfMDhSlPlsLIksoYGsXDqvpWVm8L58SxlH6okNvztfRibDHRzmbssFiMQiLkBHvEMxHfDNpwVlstiYxInGN+MnCc4YfF6j4AVX4AXXhxz7iZ4v46ftegpj6ApC7CYL0lmXsEkSOAiJNQREbhqVR6GUxnkEFgDZAQxVxw+TzHIQUE9ZmEFM2iKHbLXVT0NuqOTLZ9jddo8KnLZ/DMo5gKJnF+j3hKWGnn6rvhGcGo95fBlsbey82PzDt/NHSP/FnrkzArdEcwsDzF2k3NhYMoqTSMExuUuRPEfdMpUYeJE48kQ+h6dF8qS5dKK8MMQmgL1fPhDor6n2W1SHSZC/c98JRZRNmYdr0WPIRiiFAafqkkhIYxkPWK+vPsJU1mGEykIcvd+/B/uMoSW2aS6rVTSdXqG66xXMbfJJnH6A+JjANd8r0Ay+OfCh074U8QBe68TGk5T6ZldnTiP+/8Ciruzq/4WeZNGQJgDDApRhJGypezBe23oWV4Fvffqq1DKb5/CPnZ0ZFdHQqtlejrsComUdXPLriKle8TTLOP9P7jHbLstY6nOW0LKcen/v6hbpzJxz++Pu+4z7cofHt7N9mVe7xAp4gye0eEe2PRTb4MAmirLPILl7DI8w9+rP0nLIIdlsUCxaBFzIS4TnywV7HPqAwY7csVkpZg2tEPKZhRG4yT0mapulTRjdpNVAX4ohR5i4qDbc/7qIaR+pJ6BBw9AwkDNepExMZfEHLdV0JwibQV2OYFfJpygtbFn482K1c9/vhzByL5WjyqXWnvFm1dxsH6d25m7VLTqatdrA8IhSkdN6rrniQUzRv2zCqHXJjsts4rA3DPGRIaS0AzJdF7meABdYAS8LGm3ed7W0TK6P/Hm5Wkq4nhMBFqUFCNcalka+5oIimbUeTM27dLQN3bXvdAivb6+bK9uwhXXHhJvmrv95zwPotj5/gojduUfnFLexlw4JqG2YHHEsm9zRdPd6YbUvdt0yzrn1LU7nWfaUHK025OYVju7KOrV3mBrZ5d80i84P2ALrf7Ms7cN+cN/X1Kn7mRiC9c5eCIJDVXalbf+luIz+5b+vyQ+HUNcfpNtRLjCDuQ9RKekXEi1Gr709iVvgVIzJNRpKxVRcoDAkS7R0y6tU7+5Z9TgZBYhD+qfbGret4f8HryIYe2dCVbGgXUmYVcJrGrV2zotva0DhHUvosUaRKKKvrRqJyb6tywSV9bnr9/e42uxnq7Xqj04AjZz+2mmHaFTF6K3f5HRj9WFxeB0bvJ3B+f7k8+/W911TxsItv2e2UHW9UHeQ2t+6rzpSVut4rXXFARON2fMmVT667PUisZLKOCc8x4alOeD5DMmCVXcLd/Q/Nd1xT8jvdVv2urhSn2uvco9cdvW7T7z+JhO/P9D0NWIflexkFU/K9ioTy0L4Kui1jyPmHayu22C1rpf42oOLS833aYukWQ9P3bQs12a64LXyftljyC93YN5urXqG0P4otdC0n0w/GHGq6Zn0Uc+QXihk5qOk7MwZFj/ePzjToX9yddLWTwKZWvMkP9j4sPThAU4+hrtrEm6JjxTHKUjwTyEyyuofZFdgw3Ldj43m2am98UR0aX0rY6iSMWLH49XX6vYniN+zG2f8=&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><path d="M 110 220 L 164.95 220" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 170.2 220 L 163.2 223.5 L 164.95 220 L 163.2 216.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="5" y="170" width="100" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 46.63 233.72 C 49.14 234.97 51.93 235.72 54.91 235.72 C 57.84 235.72 60.58 235 63.06 233.8 C 65.79 233.91 69.12 235.17 72.26 237.22 C 75.61 239.39 78.71 242.28 80.71 244.8 C 85.07 250.75 86.99 256.12 86.92 266.13 L 23.01 266.13 C 23.23 254.12 25.22 249.54 30.86 242.66 C 33.43 239.81 40.01 234.78 46.63 233.72 Z M 54.91 201.84 C 63.23 201.84 69.93 208.53 69.93 216.85 C 69.93 225.16 63.23 231.86 54.91 231.86 C 46.6 231.86 39.9 225.16 39.9 216.85 C 39.9 208.53 46.6 201.84 54.91 201.84 Z M 54.91 197.97 C 44.51 197.97 36.04 206.45 36.04 216.85 C 36.04 222.45 38.54 227.44 42.43 230.9 C 36 232.94 30.64 237.13 27.97 240.09 C 27.95 240.11 27.93 240.13 27.91 240.15 C 21.64 247.8 19.06 253.9 19.06 268.07 C 19.06 269.13 19.93 270 20.99 270 L 88.89 270 C 89.94 270 90.79 269.17 90.82 268.13 C 91.2 256.2 88.83 249.31 83.79 242.47 C 83.78 242.46 83.77 242.44 83.75 242.42 C 81.45 239.51 78.11 236.41 74.37 233.98 C 72.2 232.57 69.89 231.52 67.54 230.78 C 71.35 227.32 73.79 222.38 73.79 216.85 C 73.79 206.45 65.32 197.97 54.91 197.97 Z M 32.8 218.32 L 9.11 218.32 C 9.3 210.35 10.66 207.3 14.51 202.59 C 16.24 200.68 20.82 197.2 25.28 196.45 C 27.08 197.3 29.04 197.86 31.15 197.86 C 33.24 197.86 35.17 197.33 36.95 196.5 C 38.73 196.58 40.99 197.42 43.15 198.83 C 43.31 198.93 43.47 199.03 43.62 199.14 L 45.79 195.98 C 45.61 195.85 45.43 195.73 45.24 195.61 C 43.95 194.77 42.57 194.05 41.16 193.51 C 43.56 191 45.08 187.65 45.08 183.93 C 45.08 176.26 38.82 170 31.15 170 L 31.15 170 C 23.48 170 17.22 176.26 17.22 183.93 C 17.22 187.7 18.76 191.11 21.21 193.62 C 16.94 195.19 13.48 198 11.65 200.03 C 11.63 200.06 11.6 200.08 11.59 200.1 C 7.1 205.57 5.19 210.13 5.19 220.24 C 5.19 221.29 6.05 222.15 7.11 222.15 L 32.86 222.15 Z M 31.15 173.83 C 36.75 173.83 41.25 178.33 41.25 183.93 C 41.25 189.53 36.75 194.03 31.15 194.03 C 25.55 194.03 21.06 189.53 21.06 183.93 C 21.06 178.33 25.55 173.83 31.15 173.83 Z M 77.2 218.32 L 100.89 218.32 C 100.7 210.35 99.34 207.3 95.49 202.59 C 93.76 200.68 89.18 197.2 84.72 196.45 C 82.92 197.3 80.96 197.86 78.85 197.86 C 76.76 197.86 74.83 197.33 73.05 196.5 C 71.27 196.58 69.01 197.42 66.85 198.83 C 66.69 198.93 66.54 199.03 66.38 199.14 L 64.21 195.98 C 64.39 195.85 64.58 195.73 64.76 195.61 C 66.06 194.77 67.43 194.05 68.84 193.51 C 66.44 191 64.92 187.65 64.92 183.93 C 64.92 176.26 71.18 170 78.85 170 L 78.85 170 C 86.52 170 92.78 176.26 92.78 183.93 C 92.78 187.7 91.24 191.11 88.79 193.62 C 93.06 195.19 96.52 198 98.36 200.03 C 98.38 200.06 98.4 200.08 98.42 200.1 C 102.9 205.57 104.81 210.13 104.81 220.24 C 104.81 221.29 103.95 222.15 102.89 222.15 L 77.14 222.15 Z M 78.85 173.83 C 73.25 173.83 68.75 178.33 68.75 183.93 C 68.75 189.53 73.25 194.03 78.85 194.03 C 84.45 194.03 88.94 189.53 88.94 183.93 C 88.94 178.33 84.45 173.83 78.85 173.83 Z" fill="#232f3e" stroke="none" pointer-events="all"/><rect x="175" y="170" width="102.63" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 243.29 253.71 C 241.79 253.71 240.57 254.66 240.57 255.84 L 240.57 259.9 C 240.57 261.08 241.79 262.03 243.29 262.03 L 266.63 262.03 C 268.14 262.03 269.35 261.08 269.35 259.9 L 269.35 255.84 C 269.35 254.66 268.14 253.71 266.63 253.71 Z M 182.7 249.46 L 269.94 249.46 C 271.99 249.46 273.48 250.93 273.48 252.72 L 273.48 262.93 C 273.48 264.71 271.99 266.19 269.94 266.19 L 182.7 266.19 C 180.66 266.19 179.17 264.71 179.17 262.93 L 179.17 252.72 C 179.17 250.93 180.66 249.46 182.7 249.46 Z M 182.7 245.65 C 178.72 245.65 175.36 248.78 175.36 252.72 L 175.36 262.93 C 175.36 266.87 178.72 270 182.7 270 L 269.94 270 C 273.93 270 277.29 266.87 277.29 262.93 L 277.29 252.72 C 277.29 248.78 273.93 245.65 269.94 245.65 Z M 187.26 182 L 265.34 182 L 265.34 229.43 L 187.26 229.43 Z M 185.39 178.19 C 185.39 178.19 184.34 178.51 184.33 178.51 C 184.33 178.51 184.12 178.67 184.04 178.75 C 183.96 178.83 183.91 178.9 183.86 178.96 C 183.67 179.21 183.63 179.36 183.58 179.47 C 183.5 179.69 183.49 179.79 183.48 179.88 C 183.45 180.07 183.45 180.2 183.45 180.35 L 183.45 231.08 C 183.45 231.23 183.45 231.36 183.48 231.55 C 183.49 231.65 183.5 231.74 183.58 231.97 C 183.63 232.08 183.67 232.22 183.86 232.47 C 183.91 232.54 183.96 232.61 184.04 232.68 C 184.12 232.76 184.33 232.93 184.33 232.93 C 184.34 232.93 185.39 233.24 185.39 233.24 L 267.2 233.24 C 267.2 233.24 268.25 232.93 268.25 232.93 C 268.26 232.93 268.47 232.76 268.55 232.68 C 268.63 232.61 268.69 232.54 268.73 232.47 C 268.92 232.22 268.97 232.08 269.01 231.97 C 269.09 231.74 269.1 231.65 269.11 231.55 C 269.14 231.36 269.15 231.23 269.15 231.08 L 269.15 180.35 C 269.15 180.2 269.14 180.07 269.11 179.88 C 269.1 179.79 269.09 179.69 269.01 179.47 C 268.97 179.36 268.92 179.21 268.73 178.96 C 268.69 178.9 268.63 178.83 268.55 178.75 C 268.47 178.67 268.26 178.51 268.25 178.51 C 268.25 178.51 267.2 178.19 267.2 178.19 Z M 180.88 173.81 L 271.76 173.81 C 272.71 173.81 273.58 174.65 273.58 175.93 L 273.58 235.39 C 273.58 236.68 272.71 237.52 271.76 237.52 L 180.88 237.52 C 179.92 237.52 179.06 236.68 179.06 235.39 L 179.06 175.93 C 179.06 174.65 179.92 173.81 180.88 173.81 Z M 180.88 170 C 177.71 170 175.25 172.76 175.25 175.93 L 175.25 235.39 C 175.25 238.57 177.71 241.32 180.88 241.32 L 271.76 241.32 C 274.92 241.32 277.38 238.57 277.38 235.39 L 277.38 175.93 C 277.38 172.76 274.92 170 271.76 170 Z" fill="#232f3e" stroke="none" pointer-events="all"/><ellipse cx="137.5" cy="220" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 220px; margin-left: 126px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">1</div></div></div></foreignObject><text x="138" y="224" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">1</text></switch></g><rect x="186.32" y="270" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 277px; margin-left: 187px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Git LFS client</span></div></div></div></foreignObject><text x="226" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Git LFS client</text></switch></g><rect x="20.66" y="270" width="68.68" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 67px; height: 1px; padding-top: 277px; margin-left: 22px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Users</span></div></div></div></foreignObject><text x="55" y="289" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Users</text></switch></g><path d="M 281.32 247.5 L 429.63 247.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434.88 247.5 L 427.88 251 L 429.63 247.5 L 427.88 244 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 281.21 209.22 L 348.7 209.2 Q 358.7 209.2 368.7 209.15 L 429.63 208.81" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 434.88 208.79 L 427.9 212.32 L 429.63 208.81 L 427.86 205.32 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="171.32" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><path d="M 679 305 L 679 315 Q 679 325 669 325 L 236.3 325 Q 226.3 325 226.31 315.68 L 226.31 306.37" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 301.12 L 229.81 308.12 L 226.31 306.37 L 222.81 308.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 546.44 209.22 L 556.22 209.21 Q 566 209.2 566 199.2 L 566 150 Q 566 140 556 140 L 236.3 140 Q 226.3 140 226.31 149.32 L 226.31 158.63" fill="none" stroke="#000000" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="stroke"/><path d="M 226.32 163.88 L 222.81 156.88 L 226.31 158.63 L 229.81 156.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="624" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="348" y="5.5" width="25" height="25" fill="none" stroke="none" pointer-events="all"/><path d="M 348.02 25.2 L 348.02 6.45 C 348 6.22 348.09 5.99 348.28 5.81 C 348.46 5.63 348.73 5.52 349.02 5.5 L 358.65 5.5 C 359.31 5.5 359.86 5.92 359.89 6.45 L 359.89 9.82 L 355.45 9.82 C 354.4 9.96 353.57 10.62 353.4 11.47 L 353.4 20.38 L 349.8 20.38 L 349.8 21.36 L 353.4 21.36 L 353.4 22.34 L 349.8 22.34 L 349.8 23.27 L 353.4 23.27 L 353.4 25.2 Z M 354.58 11.72 C 354.54 11.26 354.97 10.85 355.54 10.8 L 365.17 10.8 C 365.85 10.77 366.43 11.18 366.48 11.72 L 366.48 30.5 L 354.58 30.5 Z M 349.8 9.32 L 358.12 9.31 L 358.12 8.39 L 349.8 8.39 Z M 356.38 13.71 L 356.38 14.64 L 364.64 14.64 L 364.64 13.71 Z M 364.71 25.71 L 356.32 25.71 L 356.32 26.66 L 364.71 26.66 Z M 356.32 27.61 L 356.32 28.59 L 364.71 28.59 L 364.71 27.49 Z M 373 25.2 L 367.66 25.2 L 367.66 23.27 L 371.2 23.27 L 371.2 22.34 L 367.66 22.34 L 367.66 21.36 L 371.23 21.36 L 371.23 20.38 L 367.66 20.38 L 367.66 11.47 C 367.44 10.5 366.39 9.8 365.17 9.82 L 361.13 9.82 L 361.13 6.45 C 361.16 5.95 361.66 5.54 362.28 5.5 L 371.93 5.58 C 372.52 5.58 373 5.97 373 6.45 Z M 371.2 9.34 L 371.2 8.39 L 362.84 8.39 L 362.84 9.34 Z" fill="#00188d" stroke="none" pointer-events="all"/><rect x="345" y="0" width="456" height="440" fill="none" stroke="#000000" pointer-events="all"/><rect x="373" y="3" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 10px; margin-left: 374px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Data Center</span></div></div></div></foreignObject><text x="413" y="22" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Data Center</text></switch></g><rect x="453" y="170" width="76" height="100" fill="none" stroke="none" pointer-events="all"/><path d="M 504.96 269.8 C 498.64 269.8 492.59 267.28 488.15 262.8 C 483.71 258.32 481.26 252.25 481.34 245.95 C 481.34 232.95 491.92 222.4 504.96 222.4 C 511.26 222.35 517.32 224.81 521.79 229.23 C 526.26 233.65 528.78 239.67 528.78 245.95 C 529 252.33 526.57 258.51 522.06 263.03 C 517.54 267.55 511.35 270 504.96 269.8 Z M 498.33 264.79 C 496.79 262.88 495.79 260.6 495.41 258.18 C 493.65 258.51 491.93 259.05 490.29 259.78 C 492.52 262.1 495.27 263.85 498.33 264.89 Z M 507.27 264.99 C 509.03 262.77 510.3 260.21 510.99 257.47 C 507.09 256.93 503.12 256.97 499.23 257.58 C 499.78 260.36 501.1 262.93 503.05 264.99 C 503.58 265.64 504.35 266.01 505.16 266.01 C 505.97 266.01 506.74 265.64 507.27 264.99 Z M 498.33 254.17 C 502.77 253.3 507.35 253.3 511.79 254.17 C 512.21 252.12 512.41 250.04 512.4 247.96 L 497.72 247.96 C 497.66 250.04 497.87 252.13 498.33 254.17 Z M 485.06 247.96 C 485.3 251.07 486.26 254.09 487.87 256.77 C 490.07 255.74 492.41 255.03 494.81 254.67 C 494.27 252.47 494.04 250.22 494.11 247.96 Z M 494.11 244.15 C 494.01 241.68 494.28 239.22 494.91 236.83 C 492.68 236.46 490.52 235.78 488.48 234.83 C 486.5 237.58 485.26 240.79 484.86 244.15 Z M 512.3 244.15 C 512.39 241.93 512.19 239.7 511.69 237.54 C 507.27 238.28 502.75 238.28 498.33 237.54 C 497.83 239.7 497.63 241.93 497.72 244.15 Z M 503.15 226.91 C 501.19 228.89 499.86 231.4 499.33 234.13 C 503.13 234.75 507 234.75 510.79 234.13 C 510.09 231.46 508.78 229 506.97 226.91 C 505.89 225.85 504.23 225.85 503.15 226.91 Z M 495.71 233.43 C 496.27 231.25 497.11 229.16 498.23 227.21 C 495.49 228.34 492.97 229.93 490.79 231.92 C 492.37 232.61 494.02 233.11 495.71 233.43 Z Z Z Z Z M 519.03 231.92 C 516.96 230 514.58 228.45 511.99 227.31 C 513.06 229.24 513.88 231.29 514.41 233.43 C 515.99 233.08 517.54 232.57 519.03 231.92 Z M 525.06 244.15 C 524.64 240.84 523.43 237.68 521.54 234.93 C 519.53 235.87 517.4 236.55 515.21 236.93 C 515.74 239.33 515.98 241.79 515.91 244.25 Z M 514.51 258.18 C 513.94 260.57 513.03 262.86 511.79 264.99 C 514.86 263.93 517.61 262.14 519.83 259.78 C 518.14 259 516.35 258.46 514.51 258.18 Z M 515.91 248.06 C 515.96 250.28 515.76 252.49 515.31 254.67 C 517.63 255.11 519.89 255.81 522.05 256.77 C 523.7 254.1 524.73 251.08 525.06 247.96 Z M 453 269 L 453 174.81 C 453.1 172.23 455.14 170.15 457.72 170 L 496.42 170 C 499.12 170 501.33 172.12 501.44 174.81 L 501.44 218.6 C 488.11 220.45 477.96 231.45 477.22 244.85 L 460.24 244.85 L 460.24 249.76 L 477.42 249.76 C 477.63 251.4 478 253.01 478.53 254.57 L 460.24 254.57 L 460.24 259.38 L 480.54 259.38 C 482.58 263.31 485.63 266.63 489.38 269 Z M 460.49 189.22 L 494.28 189.34 L 494.16 184.71 L 460.49 184.46 Z" fill="#00188d" stroke="none" pointer-events="all"/><path d="M 546 247.5 L 628.63 247.5" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 633.88 247.5 L 626.88 251 L 628.63 247.5 L 626.88 244 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="436" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/><rect x="639" y="275" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 282px; margin-left: 640px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Hard Drive</span></div></div></div></foreignObject><text x="679" y="294" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Hard Drive</text></switch></g><rect x="451" y="275" width="80" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 282px; margin-left: 452px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #000000; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; "><span style="color: rgb(35 , 47 , 62) ; font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px ; background-color: rgb(248 , 249 , 250) ; text-decoration: none ; display: inline ; float: none">Git LFS server</span></div></div></div></foreignObject><text x="491" y="294" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Git LFS server</text></switch></g><ellipse cx="367.5" cy="209.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 210px; margin-left: 356px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">2</div></div></div></foreignObject><text x="368" y="213" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">2</text></switch></g><ellipse cx="398.5" cy="139.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 140px; margin-left: 387px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">3</div></div></div></foreignObject><text x="399" y="143" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">3</text></switch></g><ellipse cx="367.5" cy="247.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 248px; margin-left: 356px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">4</div></div></div></foreignObject><text x="368" y="251" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">4</text></switch></g><ellipse cx="573" cy="247.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 248px; margin-left: 562px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">5</div></div></div></foreignObject><text x="573" y="251" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">5</text></switch></g><ellipse cx="477.5" cy="324.5" rx="12.5" ry="12.5" fill="#0050ef" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 23px; height: 1px; padding-top: 325px; margin-left: 466px;"><div style="box-sizing: border-box; font-size: 0; text-align: center; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: #ffffff; line-height: 1.2; pointer-events: all; white-space: normal; word-wrap: normal; ">6</div></div></div></foreignObject><text x="478" y="328" fill="#ffffff" font-family="Helvetica" font-size="12px" text-anchor="middle">6</text></switch></g><rect x="641.5" y="231" width="75" height="39" fill="none" stroke="none" pointer-events="all"/><path d="M 644.36 270 C 642.76 269.92 641.5 268.57 641.5 266.94 L 641.5 253.56 C 641.5 251.93 642.76 250.58 644.36 250.5 L 713.63 250.5 C 715.24 250.58 716.49 251.93 716.49 253.56 L 716.49 266.94 C 716.49 268.57 715.24 269.92 713.63 270 Z M 652.64 264.11 C 653.7 264.26 654.78 263.95 655.6 263.25 C 656.42 262.55 656.9 261.53 656.94 260.44 C 657.02 259.29 656.58 258.16 655.74 257.37 C 654.91 256.59 653.77 256.22 652.64 256.39 C 650.59 256.55 649.05 258.36 649.18 260.44 C 649.25 262.38 650.74 263.96 652.64 264.11 Z M 669.96 264.11 C 671.01 264.24 672.06 263.92 672.86 263.22 C 673.67 262.52 674.14 261.51 674.18 260.44 C 674.25 259.3 673.82 258.19 673.01 257.41 C 672.19 256.62 671.08 256.25 669.96 256.39 C 667.91 256.55 666.37 258.36 666.5 260.44 C 666.57 262.38 668.06 263.96 669.96 264.11 Z M 687.66 264.11 C 689.71 264.16 691.41 262.52 691.49 260.44 C 691.56 259.37 691.18 258.33 690.45 257.56 C 689.72 256.79 688.71 256.36 687.66 256.39 C 686.6 256.36 685.59 256.79 684.86 257.56 C 684.13 258.33 683.75 259.37 683.82 260.44 C 683.9 262.52 685.6 264.16 687.66 264.11 Z M 705.35 264.11 C 707.25 263.96 708.74 262.38 708.81 260.44 C 708.94 258.36 707.4 256.55 705.35 256.39 C 704.23 256.25 703.12 256.62 702.3 257.41 C 701.49 258.19 701.06 259.3 701.13 260.44 C 701.17 261.51 701.64 262.52 702.45 263.22 C 703.25 263.92 704.3 264.24 705.35 264.11 Z M 716.34 244.61 L 641.65 244.61 L 655.35 231 L 702.56 231 Z" fill="#00188d" stroke="none" pointer-events="all"/><rect x="635" y="165" width="110" height="110" fill="none" stroke="none" pointer-events="all"/></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%">Viewer does not support full SVG 1.1</text></a></switch></svg>
@self.svg

When user push/pull (1) changes Git LFS client make Batch API request (2) over HTTP(S) to batch endpoint. This endpoint return (3) transfer api endpoint for write/read access for each lfs object. After receiving the response client make a request (4) to transfer endpoint, that redirect write/read (5) request to external hard drive and response returned back (6) to a client.

Instructions

Deploy

The deployment of Git LFS is fully based on terraform templates. First of all you will need to install terraform client. To deploy Git LFS server you need go to infrastructure folder and invoke the appropriate commands for your infrastructure provider.

AWS

To get started with AWS you need to create an AWS account and configure AWS cli.

aws configure --profile default

After these steps you need create aws/vars/<name>.tfvars file with correct for you input variables. Now you ready to create necessary resources, please invoke following command.

make apply provider=aws environment=dev profile=default auto-approve=true

After successful deployment output property api_gateway_endpoint contains your Git LFS server endpoint URL.

Azure

To get started with Azure you need to create an Azure account and configure Azure CLI.

az login

After these steps you need create azure/vars/<name>.tfvars file with correct for you input variables. Now you ready to create necessary resources, please invoke following command.

make apply provider=azure environment=dev subscription_id=b4a47026-a2bd-11ea-bb37-0242ac130002 auto-approve=true

After successful deployment output property function_app_endpoint contains your Git LFS server endpoint URL.

GCP

To get started with Google Cloud Platform you need to create an GCP account, and configure Google Cloud SDK.

gcloud auth application-default login

After successfully login you should create gcp/vars/<name>.tfvars file with correct for you input variables. Now you ready to create necessary resources, please invoke following command.

make apply provider=gcp environment=dev project=invertible-vent-699209 auto-approve=true

After successful deployment output property function_endpoint contains your Git LFS server endpoint URL.

Self-Hosted

To get started with self-hosted you need to install Docker engine. After that you need create aws/vars/<name>.tfvars file with correct for you input variables. Now you ready to create necessary resources, please invoke following command.

make apply provider=self environment=dev auto-approve=true

After successful deployment output property endpoint contains your Git LFS server endpoint URL.

Usage

To use custom a Git LFS server you need perform steps described in a section deploy.

Create .lfsconfig file in the root of your project repository and replace the endpoint url with correct for you value (see terraform output of deploying infrastructure).

[lfs]
url = htts://example.gitlfs.com/api/v1/

To associate a file type with Git LFS server, create .gitattributes in the root of your project repository and add your types as shown in the below example.

*.pdf filter=lfs diff=lfs merge=lfs -text

Commit .lfsconfig and .gitattributes files and push it to origin.

git add .lfsconfig .gitattributes
git commit -m 'Configure Git LFS server'
git push origin

Now you are ready to use Git LFS custom server. To test it, commit progit.pdf binary file.

git add progit.pdf
git commit -m 'Add book Pro Git [Scott Chacon, Ben Straub]'
git push origin

After a successful commit, clone project to another location or another computer to confirm you can read the files.

All steps described here available in example that located in the integration folder.

About

A set of modules for deploying custom Git LFS servers on different infrastructure providers


Languages

Language:Python 65.5%Language:HCL 22.5%Language:Makefile 11.5%Language:Dockerfile 0.4%