Merge pull request #52 from hashicorp/oss/merge-main-007fc4960b16ab8f6290e37fe816126c6a480cd0

[main] OSS to ENT merge of (007fc49)
This commit is contained in:
hc-github-team-secure-boundary authored and GitHub committed 2023-01-31 12:08:04 -08:00
commit 6bc9482914
33 files changed
+575 -859

No files matched your search

-81
View File
@@ -1,81 +0,0 @@
<svg width="484" height="262" viewBox="0 0 484 262" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="1" y="0.5" width="141" height="65" rx="2.5" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.5 16.25C18.5 15.0074 19.5074 14 20.75 14H27.25C28.4926 14 29.5 15.0074 29.5 16.25V18.3622L31.5506 19.8147C32.1461 20.2365 32.5001 20.921 32.5001 21.6507L32.5001 26.7501C32.5001 27.4404 31.9404 28.0001 31.2501 28.0001H28.7501C28.5421 28.0001 28.354 27.9154 28.2181 27.7788C28.0833 27.6432 28 27.4563 28 27.25V16.25C28 15.8358 27.6642 15.5 27.25 15.5H20.75C20.3358 15.5 20 15.8358 20 16.25V27.25C20 27.6642 19.6642 28 19.25 28C18.8358 28 18.5 27.6642 18.5 27.25V16.25ZM29.5 26.5001V20.2004L30.6836 21.0387C30.8821 21.1793 31.0001 21.4075 31.0001 21.6507L31.0001 26.5001H29.5Z" fill="#BAC1CC"/>
<path d="M22.25 23.5498C21.8634 23.5498 21.55 23.8632 21.55 24.2498V27.2498C21.55 27.6364 21.8634 27.9498 22.25 27.9498C22.6366 27.9498 22.95 27.6364 22.95 27.2498V24.9498H25.05V27.2498C25.05 27.6364 25.3634 27.9498 25.75 27.9498C26.1366 27.9498 26.45 27.6364 26.45 27.2498V24.2498C26.45 23.8632 26.1366 23.5498 25.75 23.5498H22.25Z" fill="#BAC1CC"/>
<path d="M21.75 17.75C21.75 17.3358 22.0858 17 22.5 17H22.75C23.1642 17 23.5 17.3358 23.5 17.75C23.5 18.1642 23.1642 18.5 22.75 18.5H22.5C22.0858 18.5 21.75 18.1642 21.75 17.75Z" fill="#BAC1CC"/>
<path d="M25.25 17C24.8358 17 24.5 17.3358 24.5 17.75C24.5 18.1642 24.8358 18.5 25.25 18.5H25.5C25.9142 18.5 26.25 18.1642 26.25 17.75C26.25 17.3358 25.9142 17 25.5 17H25.25Z" fill="#BAC1CC"/>
<path d="M21.75 19.75C21.75 19.3358 22.0858 19 22.5 19H22.75C23.1642 19 23.5 19.3358 23.5 19.75C23.5 20.1642 23.1642 20.5 22.75 20.5H22.5C22.0858 20.5 21.75 20.1642 21.75 19.75Z" fill="#BAC1CC"/>
<path d="M25.25 19C24.8358 19 24.5 19.3358 24.5 19.75C24.5 20.1642 24.8358 20.5 25.25 20.5H25.5C25.9142 20.5 26.25 20.1642 26.25 19.75C26.25 19.3358 25.9142 19 25.5 19H25.25Z" fill="#BAC1CC"/>
<path d="M21.75 21.75C21.75 21.3358 22.0858 21 22.5 21H22.75C23.1642 21 23.5 21.3358 23.5 21.75C23.5 22.1642 23.1642 22.5 22.75 22.5H22.5C22.0858 22.5 21.75 22.1642 21.75 21.75Z" fill="#BAC1CC"/>
<path d="M25.25 21C24.8358 21 24.5 21.3358 24.5 21.75C24.5 22.1642 24.8358 22.5 25.25 22.5H25.5C25.9142 22.5 26.25 22.1642 26.25 21.75C26.25 21.3358 25.9142 21 25.5 21H25.25Z" fill="#BAC1CC"/>
<path d="M46.1289 16.3457C43.7383 16.3457 42.25 18.0508 42.25 20.7695C42.25 23.4766 43.7031 25.1992 46.1289 25.1992C48.543 25.1992 50.0078 23.4707 50.0078 20.7695C50.0078 18.0566 48.5312 16.3457 46.1289 16.3457ZM46.1289 17.3184C47.8574 17.3184 48.9238 18.6543 48.9238 20.7695C48.9238 22.8672 47.8633 24.2266 46.1289 24.2266C44.3711 24.2266 43.334 22.8672 43.334 20.7695C43.334 18.6543 44.4062 17.3184 46.1289 17.3184ZM51.707 25H52.7148V21.0859C52.7148 20.1953 53.4121 19.5508 54.373 19.5508C54.5723 19.5508 54.9355 19.5859 55.0176 19.6094V18.6016C54.8887 18.584 54.6777 18.5723 54.5137 18.5723C53.6758 18.5723 52.9492 19.0059 52.7617 19.6211H52.668V18.6836H51.707V25ZM58.7031 27.4258C60.4258 27.4258 61.5156 26.5234 61.5156 25.1113V18.6836H60.5547V19.6855H60.4609C60.0977 19.0059 59.3184 18.5723 58.4336 18.5723C56.8105 18.5723 55.7852 19.8555 55.7852 21.748C55.7852 23.6406 56.7988 24.9062 58.4336 24.9062C59.3008 24.9062 60.0156 24.5137 60.4141 23.8164H60.5078V25.0586C60.5078 25.9902 59.834 26.5469 58.7031 26.5469C57.7949 26.5469 57.2324 26.2129 57.1211 25.6973H56.0547C56.207 26.7402 57.1797 27.4258 58.7031 27.4258ZM58.6562 24.0156C57.4844 24.0156 56.8281 23.125 56.8281 21.748C56.8281 20.3711 57.4844 19.4805 58.6562 19.4805C59.8223 19.4805 60.5312 20.3711 60.5312 21.748C60.5312 23.125 59.8281 24.0156 58.6562 24.0156Z" fill="#6F7682"/>
<path d="M42.375 41.9453C42.4766 43.9844 44.1875 45.2812 46.7734 45.2812C49.5078 45.2812 51.2031 43.9219 51.2031 41.7344C51.2031 40.0234 50.2422 39.0703 47.9531 38.5469L46.6562 38.25C45.2578 37.9219 44.6875 37.4766 44.6875 36.7031C44.6875 35.7266 45.5469 35.0859 46.8438 35.0859C48.0781 35.0859 48.9531 35.7188 49.0938 36.7266H51.0234C50.9297 34.7969 49.2188 33.4453 46.8516 33.4453C44.3281 33.4453 42.6562 34.8047 42.6562 36.8359C42.6562 38.5078 43.6172 39.5156 45.6641 39.9844L47.125 40.3203C48.5703 40.6562 49.1875 41.1562 49.1875 41.9766C49.1875 42.9375 48.2266 43.6328 46.8984 43.6328C45.4688 43.6328 44.4688 42.9766 44.3438 41.9453H42.375ZM58.5659 42.6641C58.2847 43.3047 57.6206 43.6641 56.6597 43.6641C55.3862 43.6641 54.5659 42.7578 54.5191 41.3125V41.2109H60.4878V40.5938C60.4878 37.9141 59.0269 36.2969 56.5894 36.2969C54.1128 36.2969 52.5737 38.0234 52.5737 40.7656C52.5737 43.5 54.0894 45.1719 56.605 45.1719C58.6206 45.1719 60.0503 44.2031 60.4019 42.6641H58.5659ZM56.5816 37.8047C57.7456 37.8047 58.5112 38.625 58.5503 39.9219H54.5269C54.6128 38.6406 55.4253 37.8047 56.5816 37.8047ZM69.5459 39.3125C69.3428 37.5469 68.0147 36.2969 65.8194 36.2969C63.2491 36.2969 61.7412 37.9453 61.7412 40.7109C61.7412 43.5078 63.2569 45.1719 65.8272 45.1719C67.9912 45.1719 69.335 43.9688 69.5459 42.2031H67.7022C67.4991 43.1016 66.8272 43.5781 65.8194 43.5781C64.4991 43.5781 63.7022 42.5234 63.7022 40.7109C63.7022 38.9297 64.4912 37.8828 65.8194 37.8828C66.8819 37.8828 67.5225 38.4844 67.7022 39.3125H69.5459ZM76.19 33.4453C72.9166 33.4453 70.8541 35.7188 70.8541 39.3594C70.8541 42.9922 72.8853 45.2812 76.19 45.2812C79.4791 45.2812 81.5181 42.9922 81.5181 39.3594C81.5181 35.7188 79.4713 33.4453 76.19 33.4453ZM76.19 35.1875C78.19 35.1875 79.4634 36.8047 79.4634 39.3594C79.4634 41.8984 78.1978 43.5391 76.19 43.5391C74.1588 43.5391 72.9166 41.8984 72.9166 39.3594C72.9166 36.8047 74.19 35.1875 76.19 35.1875ZM88.0137 36.3203C86.8419 36.3203 85.8497 36.9062 85.3575 37.875H85.2247V36.4609H83.3575V47.8359H85.295V43.7031H85.4278C85.8653 44.6094 86.8106 45.1406 88.0372 45.1406C90.1934 45.1406 91.5372 43.4453 91.5372 40.7344C91.5372 38 90.1778 36.3203 88.0137 36.3203ZM87.4044 43.5312C86.0841 43.5312 85.2637 42.4609 85.2559 40.7344C85.2637 39.0078 86.0919 37.9375 87.4122 37.9375C88.7403 37.9375 89.545 38.9844 89.545 40.7344C89.545 42.4844 88.7481 43.5312 87.4044 43.5312ZM93.0172 38.8984C93.0172 40.1797 93.7906 40.9297 95.4313 41.3047L96.9469 41.6562C97.7594 41.8438 98.1266 42.1562 98.1266 42.6406C98.1266 43.2891 97.4469 43.7344 96.4703 43.7344C95.5016 43.7344 94.9 43.3438 94.7125 42.7109H92.7984C92.9469 44.25 94.2906 45.1719 96.4234 45.1719C98.5563 45.1719 100.064 44.0859 100.064 42.4531C100.064 41.1953 99.3063 40.5 97.6734 40.125L96.1656 39.7891C95.3063 39.5859 94.9 39.2812 94.9 38.7969C94.9 38.1641 95.5641 37.7344 96.4469 37.7344C97.3531 37.7344 97.9234 38.125 98.0641 38.7266H99.8844C99.7438 37.1875 98.4703 36.2969 96.4391 36.2969C94.4234 36.2969 93.0172 37.3672 93.0172 38.8984Z" fill="#6F7682"/>
<rect x="1" y="0.5" width="141" height="65" rx="2.5" stroke="#BAC1CC"/>
<path d="M20 87.75C20 87.3358 20.3358 87 20.75 87C21.1642 87 21.5 87.3358 21.5 87.75V92.25C21.5 92.7141 21.6844 93.1592 22.0126 93.4874C22.3408 93.8156 22.7859 94 23.25 94H28.9393L26.7197 91.7803C26.4268 91.4874 26.4268 91.0126 26.7197 90.7197C27.0126 90.4268 27.4874 90.4268 27.7803 90.7197L31.2803 94.2197C31.5732 94.5126 31.5732 94.9874 31.2803 95.2803L27.7803 98.7803C27.4874 99.0732 27.0126 99.0732 26.7197 98.7803C26.4268 98.4874 26.4268 98.0126 26.7197 97.7197L28.9393 95.5H23.25C22.388 95.5 21.5614 95.1576 20.9519 94.5481C20.3424 93.9386 20 93.112 20 92.25V87.75Z" fill="#6F7682"/>
<rect x="45" y="60.5" width="141" height="65" rx="2.5" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M63.75 74C63.0596 74 62.5 74.5596 62.5 75.25V78.75C62.5 79.4404 63.0596 80 63.75 80H67.25C67.9404 80 68.5 79.4404 68.5 78.75V75.25C68.5 74.5596 67.9404 74 67.25 74H63.75ZM64 78.5V75.5H67V78.5H64Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M71.75 74C71.0596 74 70.5 74.5596 70.5 75.25V78.75C70.5 79.4404 71.0596 80 71.75 80H75.25C75.9404 80 76.5 79.4404 76.5 78.75V75.25C76.5 74.5596 75.9404 74 75.25 74H71.75ZM72 78.5V75.5H75V78.5H72Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M70.5 83.25C70.5 82.5596 71.0596 82 71.75 82H75.25C75.9404 82 76.5 82.5596 76.5 83.25V86.75C76.5 87.4404 75.9404 88 75.25 88H71.75C71.0596 88 70.5 87.4404 70.5 86.75V83.25ZM72 83.5V86.5H75V83.5H72Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M63.75 82C63.0596 82 62.5 82.5596 62.5 83.25V86.75C62.5 87.4404 63.0596 88 63.75 88H67.25C67.9404 88 68.5 87.4404 68.5 86.75V83.25C68.5 82.5596 67.9404 82 67.25 82H63.75ZM64 86.5V83.5H67V86.5H64Z" fill="#BAC1CC"/>
<path d="M86.5781 76.5449V85H87.6328V81.9824H89.7598C91.3477 81.9824 92.4785 80.8633 92.4785 79.2812C92.4785 77.6699 91.3711 76.5449 89.7715 76.5449H86.5781ZM87.6328 77.4824H89.4961C90.7207 77.4824 91.3945 78.1211 91.3945 79.2812C91.3945 80.4004 90.6973 81.0449 89.4961 81.0449H87.6328V77.4824ZM94.0781 85H95.0859V81.0859C95.0859 80.1953 95.7832 79.5508 96.7441 79.5508C96.9434 79.5508 97.3066 79.5859 97.3887 79.6094V78.6016C97.2598 78.584 97.0488 78.5723 96.8848 78.5723C96.0469 78.5723 95.3203 79.0059 95.1328 79.6211H95.0391V78.6836H94.0781V85ZM101.068 85.1113C102.867 85.1113 103.98 83.8691 103.98 81.8418C103.98 79.8086 102.867 78.5723 101.068 78.5723C99.2695 78.5723 98.1562 79.8086 98.1562 81.8418C98.1562 83.8691 99.2695 85.1113 101.068 85.1113ZM101.068 84.2031C99.873 84.2031 99.1992 83.3359 99.1992 81.8418C99.1992 80.3418 99.873 79.4805 101.068 79.4805C102.264 79.4805 102.938 80.3418 102.938 81.8418C102.938 83.3359 102.264 84.2031 101.068 84.2031ZM106.102 77.4648C106.488 77.4648 106.805 77.1484 106.805 76.7617C106.805 76.375 106.488 76.0586 106.102 76.0586C105.715 76.0586 105.398 76.375 105.398 76.7617C105.398 77.1484 105.715 77.4648 106.102 77.4648ZM106.594 78.6836H105.586V85.3281C105.586 86.0254 105.352 86.3066 104.637 86.3066H104.484V87.168H104.66C105.984 87.168 106.594 86.6113 106.594 85.3105V78.6836ZM112.699 83.3652C112.436 83.9219 111.885 84.2207 111.07 84.2207C109.998 84.2207 109.301 83.4297 109.248 82.1816V82.1348H113.789V81.748C113.789 79.7852 112.752 78.5723 111.047 78.5723C109.312 78.5723 108.199 79.8613 108.199 81.8477C108.199 83.8457 109.295 85.1113 111.047 85.1113C112.43 85.1113 113.414 84.4434 113.707 83.3652H112.699ZM111.035 79.4629C112.037 79.4629 112.705 80.2012 112.729 81.3203H109.248C109.324 80.2012 110.027 79.4629 111.035 79.4629ZM120.598 80.6172C120.422 79.4922 119.484 78.5723 117.949 78.5723C116.18 78.5723 115.055 79.8496 115.055 81.8184C115.055 83.8281 116.186 85.1113 117.955 85.1113C119.473 85.1113 120.416 84.2559 120.598 83.0957H119.578C119.391 83.8105 118.799 84.2031 117.949 84.2031C116.824 84.2031 116.098 83.2773 116.098 81.8184C116.098 80.3887 116.812 79.4805 117.949 79.4805C118.857 79.4805 119.414 79.9902 119.578 80.6172H120.598ZM122.625 77.0488V78.6836H121.605V79.5273H122.625V83.3594C122.625 84.5664 123.146 85.0469 124.447 85.0469C124.646 85.0469 124.84 85.0234 125.039 84.9883V84.1387C124.852 84.1562 124.752 84.1621 124.57 84.1621C123.914 84.1621 123.633 83.8457 123.633 83.1016V79.5273H125.039V78.6836H123.633V77.0488H122.625Z" fill="#6F7682"/>
<path d="M94.1641 105H96.3281L92.3203 93.7266H90.0547L86.0547 105H88.0938L89.0625 102.086H93.2109L94.1641 105ZM91.0781 95.8438H91.2109L92.7422 100.531H89.5312L91.0781 95.8438ZM103.589 96.9297H103.707L106.003 105H107.894L110.917 93.7266H108.832L106.902 102.188H106.792L104.542 93.7266H102.753L100.535 102.188H100.417L98.4878 93.7266H96.3862L99.4097 105H101.308L103.589 96.9297ZM112.163 101.945C112.265 103.984 113.976 105.281 116.562 105.281C119.296 105.281 120.991 103.922 120.991 101.734C120.991 100.023 120.03 99.0703 117.741 98.5469L116.444 98.25C115.046 97.9219 114.476 97.4766 114.476 96.7031C114.476 95.7266 115.335 95.0859 116.632 95.0859C117.866 95.0859 118.741 95.7188 118.882 96.7266H120.812C120.718 94.7969 119.007 93.4453 116.64 93.4453C114.116 93.4453 112.444 94.8047 112.444 96.8359C112.444 98.5078 113.405 99.5156 115.452 99.9844L116.913 100.32C118.358 100.656 118.976 101.156 118.976 101.977C118.976 102.938 118.015 103.633 116.687 103.633C115.257 103.633 114.257 102.977 114.132 101.945H112.163Z" fill="#6F7682"/>
<rect x="45" y="60.5" width="141" height="65" rx="2.5" stroke="#BAC1CC"/>
<path d="M64 147.75C64 147.336 64.3358 147 64.75 147C65.1642 147 65.5 147.336 65.5 147.75V152.25C65.5 152.714 65.6844 153.159 66.0126 153.487C66.3408 153.816 66.7859 154 67.25 154H72.9393L70.7197 151.78C70.4268 151.487 70.4268 151.013 70.7197 150.72C71.0126 150.427 71.4874 150.427 71.7803 150.72L75.2803 154.22C75.5732 154.513 75.5732 154.987 75.2803 155.28L71.7803 158.78C71.4874 159.073 71.0126 159.073 70.7197 158.78C70.4268 158.487 70.4268 158.013 70.7197 157.72L72.9393 155.5H67.25C66.388 155.5 65.5614 155.158 64.9519 154.548C64.3424 153.939 64 153.112 64 152.25V147.75Z" fill="#6F7682"/>
<rect x="89" y="120.5" width="141" height="65" rx="2.5" fill="white"/>
<path d="M108.55 137.75C108.55 137.363 108.863 137.05 109.25 137.05H112.75C113.137 137.05 113.45 137.363 113.45 137.75C113.45 138.137 113.137 138.45 112.75 138.45H109.25C108.863 138.45 108.55 138.137 108.55 137.75Z" fill="#BAC1CC"/>
<path d="M109.25 140.05C108.863 140.05 108.55 140.363 108.55 140.75C108.55 141.137 108.863 141.45 109.25 141.45H111.75C112.137 141.45 112.45 141.137 112.45 140.75C112.45 140.363 112.137 140.05 111.75 140.05H109.25Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M105.5 136.25C105.5 135.007 106.507 134 107.75 134H114.25C115.133 134 115.898 134.509 116.266 135.25H117.25C117.948 135.25 118.551 135.659 118.832 136.25H119.75C120.716 136.25 121.5 137.034 121.5 138V144C121.5 144.966 120.716 145.75 119.75 145.75H118.832C118.551 146.341 117.948 146.75 117.25 146.75H116.266C115.898 147.491 115.133 148 114.25 148H107.75C106.507 148 105.5 146.993 105.5 145.75V136.25ZM119 144.25H119.75C119.888 144.25 120 144.138 120 144V138C120 137.862 119.888 137.75 119.75 137.75H119V144.25ZM116.5 145.25V136.75H117.25C117.388 136.75 117.5 136.862 117.5 137V145C117.5 145.138 117.388 145.25 117.25 145.25H116.5ZM107.75 135.5C107.336 135.5 107 135.836 107 136.25V145.75C107 146.164 107.336 146.5 107.75 146.5H114.25C114.664 146.5 115 146.164 115 145.75V136.25C115 135.836 114.664 135.5 114.25 135.5H107.75Z" fill="#BAC1CC"/>
<path d="M137.328 145V136.545H136.273V140.201H131.633V136.545H130.578V145H131.633V141.15H136.273V145H137.328ZM141.951 145.111C143.75 145.111 144.863 143.869 144.863 141.842C144.863 139.809 143.75 138.572 141.951 138.572C140.152 138.572 139.039 139.809 139.039 141.842C139.039 143.869 140.152 145.111 141.951 145.111ZM141.951 144.203C140.756 144.203 140.082 143.336 140.082 141.842C140.082 140.342 140.756 139.48 141.951 139.48C143.146 139.48 143.82 140.342 143.82 141.842C143.82 143.336 143.146 144.203 141.951 144.203ZM146.299 140.412C146.299 141.326 146.838 141.836 148.021 142.123L149.105 142.387C149.779 142.551 150.107 142.844 150.107 143.277C150.107 143.857 149.498 144.262 148.648 144.262C147.84 144.262 147.336 143.922 147.166 143.389H146.129C146.24 144.438 147.207 145.111 148.613 145.111C150.049 145.111 151.145 144.332 151.145 143.201C151.145 142.293 150.57 141.777 149.381 141.49L148.408 141.256C147.664 141.074 147.312 140.805 147.312 140.371C147.312 139.809 147.898 139.428 148.648 139.428C149.41 139.428 149.902 139.762 150.037 140.266H151.033C150.898 139.229 149.979 138.572 148.654 138.572C147.312 138.572 146.299 139.363 146.299 140.412ZM153.09 137.049V138.684H152.07V139.527H153.09V143.359C153.09 144.566 153.611 145.047 154.912 145.047C155.111 145.047 155.305 145.023 155.504 144.988V144.139C155.316 144.156 155.217 144.162 155.035 144.162C154.379 144.162 154.098 143.846 154.098 143.102V139.527H155.504V138.684H154.098V137.049H153.09ZM165.641 140.617C165.465 139.492 164.527 138.572 162.992 138.572C161.223 138.572 160.098 139.85 160.098 141.818C160.098 143.828 161.229 145.111 162.998 145.111C164.516 145.111 165.459 144.256 165.641 143.096H164.621C164.434 143.811 163.842 144.203 162.992 144.203C161.867 144.203 161.141 143.277 161.141 141.818C161.141 140.389 161.855 139.48 162.992 139.48C163.9 139.48 164.457 139.99 164.621 140.617H165.641ZM168.887 145.111C169.73 145.111 170.422 144.742 170.832 144.068H170.926V145H171.887V140.676C171.887 139.363 171.025 138.572 169.484 138.572C168.137 138.572 167.141 139.24 167.006 140.254H168.025C168.166 139.756 168.693 139.469 169.449 139.469C170.393 139.469 170.879 139.896 170.879 140.676V141.25L169.057 141.361C167.586 141.449 166.754 142.1 166.754 143.23C166.754 144.385 167.662 145.111 168.887 145.111ZM169.074 144.227C168.342 144.227 167.797 143.852 167.797 143.207C167.797 142.574 168.219 142.24 169.18 142.176L170.879 142.064V142.645C170.879 143.547 170.111 144.227 169.074 144.227ZM174.172 137.049V138.684H173.152V139.527H174.172V143.359C174.172 144.566 174.693 145.047 175.994 145.047C176.193 145.047 176.387 145.023 176.586 144.988V144.139C176.398 144.156 176.299 144.162 176.117 144.162C175.461 144.162 175.18 143.846 175.18 143.102V139.527H176.586V138.684H175.18V137.049H174.172ZM179.867 145.111C180.711 145.111 181.402 144.742 181.812 144.068H181.906V145H182.867V140.676C182.867 139.363 182.006 138.572 180.465 138.572C179.117 138.572 178.121 139.24 177.986 140.254H179.006C179.146 139.756 179.674 139.469 180.43 139.469C181.373 139.469 181.859 139.896 181.859 140.676V141.25L180.037 141.361C178.566 141.449 177.734 142.1 177.734 143.23C177.734 144.385 178.643 145.111 179.867 145.111ZM180.055 144.227C179.322 144.227 178.777 143.852 178.777 143.207C178.777 142.574 179.199 142.24 180.16 142.176L181.859 142.064V142.645C181.859 143.547 181.092 144.227 180.055 144.227ZM184.789 145H185.797V136.176H184.789V145ZM190.35 145.111C192.148 145.111 193.262 143.869 193.262 141.842C193.262 139.809 192.148 138.572 190.35 138.572C188.551 138.572 187.438 139.809 187.438 141.842C187.438 143.869 188.551 145.111 190.35 145.111ZM190.35 144.203C189.154 144.203 188.48 143.336 188.48 141.842C188.48 140.342 189.154 139.48 190.35 139.48C191.545 139.48 192.219 140.342 192.219 141.842C192.219 143.336 191.545 144.203 190.35 144.203ZM197.445 147.426C199.168 147.426 200.258 146.523 200.258 145.111V138.684H199.297V139.686H199.203C198.84 139.006 198.061 138.572 197.176 138.572C195.553 138.572 194.527 139.855 194.527 141.748C194.527 143.641 195.541 144.906 197.176 144.906C198.043 144.906 198.758 144.514 199.156 143.816H199.25V145.059C199.25 145.99 198.576 146.547 197.445 146.547C196.537 146.547 195.975 146.213 195.863 145.697H194.797C194.949 146.74 195.922 147.426 197.445 147.426ZM197.398 144.016C196.227 144.016 195.57 143.125 195.57 141.748C195.57 140.371 196.227 139.48 197.398 139.48C198.564 139.48 199.273 140.371 199.273 141.748C199.273 143.125 198.57 144.016 197.398 144.016Z" fill="#6F7682"/>
<path d="M132.898 153.727H130.883V161.117C130.883 163.578 132.664 165.281 135.516 165.281C138.367 165.281 140.148 163.578 140.148 161.117V153.727H138.133V160.938C138.133 162.477 137.188 163.523 135.516 163.523C133.844 163.523 132.898 162.477 132.898 160.938V153.727ZM142.136 161.945C142.238 163.984 143.949 165.281 146.535 165.281C149.269 165.281 150.964 163.922 150.964 161.734C150.964 160.023 150.003 159.07 147.714 158.547L146.417 158.25C145.019 157.922 144.449 157.477 144.449 156.703C144.449 155.727 145.308 155.086 146.605 155.086C147.839 155.086 148.714 155.719 148.855 156.727H150.785C150.691 154.797 148.98 153.445 146.613 153.445C144.089 153.445 142.417 154.805 142.417 156.836C142.417 158.508 143.378 159.516 145.425 159.984L146.886 160.32C148.332 160.656 148.949 161.156 148.949 161.977C148.949 162.938 147.988 163.633 146.66 163.633C145.23 163.633 144.23 162.977 144.105 161.945H142.136ZM157.976 161.344V159.57H152.843V161.344H157.976ZM167.674 163.305H162.393V160.078H167.385V158.477H162.393V155.422H167.674V153.727H160.378V165H167.674V163.305ZM172.053 165.141C173.17 165.141 174.107 164.656 174.584 163.828H174.717V165H176.584V159.164C176.584 157.359 175.35 156.297 173.154 156.297C171.123 156.297 169.709 157.25 169.553 158.742H171.381C171.561 158.156 172.17 157.836 173.061 157.836C174.107 157.836 174.67 158.312 174.67 159.164V159.898L172.467 160.031C170.389 160.148 169.225 161.047 169.225 162.578C169.225 164.141 170.404 165.141 172.053 165.141ZM172.623 163.648C171.764 163.648 171.147 163.219 171.147 162.484C171.147 161.773 171.654 161.375 172.74 161.305L174.67 161.172V161.867C174.67 162.883 173.795 163.648 172.623 163.648ZM178.455 158.898C178.455 160.18 179.228 160.93 180.869 161.305L182.384 161.656C183.197 161.844 183.564 162.156 183.564 162.641C183.564 163.289 182.884 163.734 181.908 163.734C180.939 163.734 180.338 163.344 180.15 162.711H178.236C178.384 164.25 179.728 165.172 181.861 165.172C183.994 165.172 185.502 164.086 185.502 162.453C185.502 161.195 184.744 160.5 183.111 160.125L181.603 159.789C180.744 159.586 180.338 159.281 180.338 158.797C180.338 158.164 181.002 157.734 181.884 157.734C182.791 157.734 183.361 158.125 183.502 158.727H185.322C185.181 157.188 183.908 156.297 181.877 156.297C179.861 156.297 178.455 157.367 178.455 158.898ZM187.747 154.367V156.516H186.396V158.023H187.747V162.734C187.747 164.383 188.528 165.039 190.489 165.039C190.864 165.039 191.224 165.008 191.505 164.953V163.469C191.271 163.492 191.122 163.508 190.849 163.508C190.036 163.508 189.677 163.125 189.677 162.273V158.023H191.505V156.516H189.677V154.367H187.747ZM198.173 161.344V159.57H193.04V161.344H198.173ZM203.082 165H205.098V153.727H203.09L200.145 155.797V157.695L202.949 155.711H203.082V165Z" fill="#6F7682"/>
<rect x="89" y="120.5" width="141" height="65" rx="2.5" stroke="#BAC1CC"/>
<path d="M112 209.75C112 209.336 112.336 209 112.75 209C113.164 209 113.5 209.336 113.5 209.75V214.25C113.5 214.714 113.684 215.159 114.013 215.487C114.341 215.816 114.786 216 115.25 216H120.939L118.72 213.78C118.427 213.487 118.427 213.013 118.72 212.72C119.013 212.427 119.487 212.427 119.78 212.72L123.28 216.22C123.573 216.513 123.573 216.987 123.28 217.28L119.78 220.78C119.487 221.073 119.013 221.073 118.72 220.78C118.427 220.487 118.427 220.013 118.72 219.72L120.939 217.5H115.25C114.388 217.5 113.561 217.158 112.952 216.548C112.342 215.939 112 215.112 112 214.25V209.75Z" fill="#6F7682"/>
<g filter="url(#filter0_dd_5487_14217)">
<rect x="137.5" y="181" width="140" height="68" rx="2" fill="white"/>
<path d="M156.55 201.75C156.55 201.363 156.863 201.05 157.25 201.05H160.75C161.137 201.05 161.45 201.363 161.45 201.75C161.45 202.137 161.137 202.45 160.75 202.45H157.25C156.863 202.45 156.55 202.137 156.55 201.75Z" fill="black"/>
<path d="M157.25 204.05C156.863 204.05 156.55 204.363 156.55 204.75C156.55 205.137 156.863 205.45 157.25 205.45H159.75C160.137 205.45 160.45 205.137 160.45 204.75C160.45 204.363 160.137 204.05 159.75 204.05H157.25Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M153.5 200.25C153.5 199.007 154.507 198 155.75 198H162.25C163.133 198 163.898 198.509 164.266 199.25H165.25C165.948 199.25 166.551 199.659 166.832 200.25H167.75C168.716 200.25 169.5 201.034 169.5 202V208C169.5 208.966 168.716 209.75 167.75 209.75H166.832C166.551 210.341 165.948 210.75 165.25 210.75H164.266C163.898 211.491 163.133 212 162.25 212H155.75C154.507 212 153.5 210.993 153.5 209.75V200.25ZM167 208.25H167.75C167.888 208.25 168 208.138 168 208V202C168 201.862 167.888 201.75 167.75 201.75H167V208.25ZM164.5 209.25V200.75H165.25C165.388 200.75 165.5 200.862 165.5 201V209C165.5 209.138 165.388 209.25 165.25 209.25H164.5ZM155.75 199.5C155.336 199.5 155 199.836 155 200.25V209.75C155 210.164 155.336 210.5 155.75 210.5H162.25C162.664 210.5 163 210.164 163 209.75V200.25C163 199.836 162.664 199.5 162.25 199.5H155.75Z" fill="black"/>
<path d="M181.965 209V205.361L184.965 200.545H183.764L181.484 204.301H181.391L179.111 200.545H177.91L180.91 205.361V209H181.965ZM187.924 209.111C189.723 209.111 190.836 207.869 190.836 205.842C190.836 203.809 189.723 202.572 187.924 202.572C186.125 202.572 185.012 203.809 185.012 205.842C185.012 207.869 186.125 209.111 187.924 209.111ZM187.924 208.203C186.729 208.203 186.055 207.336 186.055 205.842C186.055 204.342 186.729 203.48 187.924 203.48C189.119 203.48 189.793 204.342 189.793 205.842C189.793 207.336 189.119 208.203 187.924 208.203ZM197.527 202.684H196.52V206.422C196.52 207.529 195.91 208.191 194.797 208.191C193.789 208.191 193.367 207.664 193.367 206.527V202.684H192.359V206.773C192.359 208.268 193.098 209.111 194.516 209.111C195.482 209.111 196.156 208.713 196.473 208.01H196.566V209H197.527V202.684ZM199.426 209H200.434V205.086C200.434 204.195 201.131 203.551 202.092 203.551C202.291 203.551 202.654 203.586 202.736 203.609V202.602C202.607 202.584 202.396 202.572 202.232 202.572C201.395 202.572 200.668 203.006 200.48 203.621H200.387V202.684H199.426V209ZM207.441 209H208.449V205.262C208.449 204.195 209.07 203.48 210.201 203.48C211.156 203.48 211.66 204.037 211.66 205.156V209H212.668V204.91C212.668 203.428 211.824 202.572 210.488 202.572C209.521 202.572 208.859 202.982 208.543 203.68H208.449V200.176H207.441V209ZM217.104 209.111C218.902 209.111 220.016 207.869 220.016 205.842C220.016 203.809 218.902 202.572 217.104 202.572C215.305 202.572 214.191 203.809 214.191 205.842C214.191 207.869 215.305 209.111 217.104 209.111ZM217.104 208.203C215.908 208.203 215.234 207.336 215.234 205.842C215.234 204.342 215.908 203.48 217.104 203.48C218.299 203.48 218.973 204.342 218.973 205.842C218.973 207.336 218.299 208.203 217.104 208.203ZM221.451 204.412C221.451 205.326 221.99 205.836 223.174 206.123L224.258 206.387C224.932 206.551 225.26 206.844 225.26 207.277C225.26 207.857 224.65 208.262 223.801 208.262C222.992 208.262 222.488 207.922 222.318 207.389H221.281C221.393 208.438 222.359 209.111 223.766 209.111C225.201 209.111 226.297 208.332 226.297 207.201C226.297 206.293 225.723 205.777 224.533 205.49L223.561 205.256C222.816 205.074 222.465 204.805 222.465 204.371C222.465 203.809 223.051 203.428 223.801 203.428C224.562 203.428 225.055 203.762 225.189 204.266H226.186C226.051 203.229 225.131 202.572 223.807 202.572C222.465 202.572 221.451 203.363 221.451 204.412ZM228.242 201.049V202.684H227.223V203.527H228.242V207.359C228.242 208.566 228.764 209.047 230.064 209.047C230.264 209.047 230.457 209.023 230.656 208.988V208.139C230.469 208.156 230.369 208.162 230.188 208.162C229.531 208.162 229.25 207.846 229.25 207.102V203.527H230.656V202.684H229.25V201.049H228.242Z" fill="black"/>
<path d="M180.906 229V217.727H178.891V229H180.906ZM183.214 229H185.152V224.023C185.152 222.742 185.878 221.938 187.035 221.938C188.214 221.938 188.761 222.602 188.761 223.93V229H190.699V223.477C190.699 221.445 189.66 220.297 187.753 220.297C186.48 220.297 185.621 220.875 185.214 221.828H185.082V220.461H183.214V229ZM192.53 222.898C192.53 224.18 193.304 224.93 194.944 225.305L196.46 225.656C197.273 225.844 197.64 226.156 197.64 226.641C197.64 227.289 196.96 227.734 195.983 227.734C195.015 227.734 194.413 227.344 194.226 226.711H192.312C192.46 228.25 193.804 229.172 195.937 229.172C198.069 229.172 199.577 228.086 199.577 226.453C199.577 225.195 198.819 224.5 197.187 224.125L195.679 223.789C194.819 223.586 194.413 223.281 194.413 222.797C194.413 222.164 195.077 221.734 195.96 221.734C196.866 221.734 197.437 222.125 197.577 222.727H199.398C199.257 221.188 197.983 220.297 195.952 220.297C193.937 220.297 192.53 221.367 192.53 222.898ZM201.823 218.367V220.516H200.471V222.023H201.823V226.734C201.823 228.383 202.604 229.039 204.565 229.039C204.94 229.039 205.299 229.008 205.581 228.953V227.469C205.346 227.492 205.198 227.508 204.924 227.508C204.112 227.508 203.753 227.125 203.753 226.273V222.023H205.581V220.516H203.753V218.367H201.823ZM209.6 229.141C210.717 229.141 211.654 228.656 212.131 227.828H212.264V229H214.131V223.164C214.131 221.359 212.897 220.297 210.701 220.297C208.67 220.297 207.256 221.25 207.1 222.742H208.928C209.108 222.156 209.717 221.836 210.608 221.836C211.654 221.836 212.217 222.312 212.217 223.164V223.898L210.014 224.031C207.936 224.148 206.772 225.047 206.772 226.578C206.772 228.141 207.951 229.141 209.6 229.141ZM210.17 227.648C209.311 227.648 208.693 227.219 208.693 226.484C208.693 225.773 209.201 225.375 210.287 225.305L212.217 225.172V225.867C212.217 226.883 211.342 227.648 210.17 227.648ZM216.197 229H218.134V224.023C218.134 222.742 218.861 221.938 220.017 221.938C221.197 221.938 221.744 222.602 221.744 223.93V229H223.681V223.477C223.681 221.445 222.642 220.297 220.736 220.297C219.463 220.297 218.603 220.875 218.197 221.828H218.064V220.461H216.197V229ZM233.091 223.312C232.888 221.547 231.56 220.297 229.364 220.297C226.794 220.297 225.286 221.945 225.286 224.711C225.286 227.508 226.802 229.172 229.372 229.172C231.536 229.172 232.88 227.969 233.091 226.203H231.247C231.044 227.102 230.372 227.578 229.364 227.578C228.044 227.578 227.247 226.523 227.247 224.711C227.247 222.93 228.036 221.883 229.364 221.883C230.427 221.883 231.068 222.484 231.247 223.312H233.091ZM240.243 226.664C239.962 227.305 239.298 227.664 238.337 227.664C237.063 227.664 236.243 226.758 236.196 225.312V225.211H242.165V224.594C242.165 221.914 240.704 220.297 238.266 220.297C235.79 220.297 234.251 222.023 234.251 224.766C234.251 227.5 235.766 229.172 238.282 229.172C240.298 229.172 241.727 228.203 242.079 226.664H240.243ZM238.258 221.805C239.423 221.805 240.188 222.625 240.227 223.922H236.204C236.29 222.641 237.102 221.805 238.258 221.805ZM249.059 225.344V223.57H243.926V225.344H249.059ZM253.968 229H255.984V217.727H253.976L251.031 219.797V221.695L253.836 219.711H253.968V229Z" fill="black"/>
<rect x="137" y="180.5" width="141" height="69" rx="2.5" stroke="#1563FF"/>
</g>
<path d="M293.735 211.045C293.434 210.761 293.42 210.286 293.705 209.985C293.989 209.684 294.464 209.67 294.765 209.955L299.265 214.205C299.415 214.346 299.5 214.544 299.5 214.75C299.5 214.956 299.415 215.154 299.265 215.295L294.765 219.545C294.464 219.83 293.989 219.816 293.705 219.515C293.42 219.214 293.434 218.739 293.735 218.455L296.864 215.5H288.25C287.836 215.5 287.5 215.164 287.5 214.75C287.5 214.336 287.836 214 288.25 214H296.864L293.735 211.045Z" fill="#6F7682"/>
<g filter="url(#filter1_dd_5487_14217)">
<rect x="309.5" y="181" width="165" height="68" rx="2" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M333.5 203C332.395 203 331.5 203.895 331.5 205C331.5 206.105 332.395 207 333.5 207C334.605 207 335.5 206.105 335.5 205C335.5 203.895 334.605 203 333.5 203ZM333 205C333 204.724 333.224 204.5 333.5 204.5C333.776 204.5 334 204.724 334 205C334 205.276 333.776 205.5 333.5 205.5C333.224 205.5 333 205.276 333 205Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M328.5 205C328.5 202.239 330.739 200 333.5 200C336.261 200 338.5 202.239 338.5 205C338.5 207.761 336.261 210 333.5 210C330.739 210 328.5 207.761 328.5 205ZM333.5 201.5C331.567 201.5 330 203.067 330 205C330 206.933 331.567 208.5 333.5 208.5C335.433 208.5 337 206.933 337 205C337 203.067 335.433 201.5 333.5 201.5Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M325.5 205C325.5 200.582 329.082 197 333.5 197C337.918 197 341.5 200.582 341.5 205C341.5 209.418 337.918 213 333.5 213C329.082 213 325.5 209.418 325.5 205ZM333.5 198.5C329.91 198.5 327 201.41 327 205C327 208.59 329.91 211.5 333.5 211.5C337.09 211.5 340 208.59 340 205C340 201.41 337.09 198.5 333.5 198.5Z" fill="black"/>
<path d="M353.83 209V201.494H356.555V200.545H350.051V201.494H352.775V209H353.83ZM358.582 209.111C359.426 209.111 360.117 208.742 360.527 208.068H360.621V209H361.582V204.676C361.582 203.363 360.721 202.572 359.18 202.572C357.832 202.572 356.836 203.24 356.701 204.254H357.721C357.861 203.756 358.389 203.469 359.145 203.469C360.088 203.469 360.574 203.896 360.574 204.676V205.25L358.752 205.361C357.281 205.449 356.449 206.1 356.449 207.23C356.449 208.385 357.357 209.111 358.582 209.111ZM358.77 208.227C358.037 208.227 357.492 207.852 357.492 207.207C357.492 206.574 357.914 206.24 358.875 206.176L360.574 206.064V206.645C360.574 207.547 359.807 208.227 358.77 208.227ZM363.445 209H364.453V205.086C364.453 204.195 365.15 203.551 366.111 203.551C366.311 203.551 366.674 203.586 366.756 203.609V202.602C366.627 202.584 366.416 202.572 366.252 202.572C365.414 202.572 364.688 203.006 364.5 203.621H364.406V202.684H363.445V209ZM370.441 211.426C372.164 211.426 373.254 210.523 373.254 209.111V202.684H372.293V203.686H372.199C371.836 203.006 371.057 202.572 370.172 202.572C368.549 202.572 367.523 203.855 367.523 205.748C367.523 207.641 368.537 208.906 370.172 208.906C371.039 208.906 371.754 208.514 372.152 207.816H372.246V209.059C372.246 209.99 371.572 210.547 370.441 210.547C369.533 210.547 368.971 210.213 368.859 209.697H367.793C367.945 210.74 368.918 211.426 370.441 211.426ZM370.395 208.016C369.223 208.016 368.566 207.125 368.566 205.748C368.566 204.371 369.223 203.48 370.395 203.48C371.561 203.48 372.27 204.371 372.27 205.748C372.27 207.125 371.566 208.016 370.395 208.016ZM379.336 207.365C379.072 207.922 378.521 208.221 377.707 208.221C376.635 208.221 375.938 207.43 375.885 206.182V206.135H380.426V205.748C380.426 203.785 379.389 202.572 377.684 202.572C375.949 202.572 374.836 203.861 374.836 205.848C374.836 207.846 375.932 209.111 377.684 209.111C379.066 209.111 380.051 208.443 380.344 207.365H379.336ZM377.672 203.463C378.674 203.463 379.342 204.201 379.365 205.32H375.885C375.961 204.201 376.664 203.463 377.672 203.463ZM382.43 201.049V202.684H381.41V203.527H382.43V207.359C382.43 208.566 382.951 209.047 384.252 209.047C384.451 209.047 384.645 209.023 384.844 208.988V208.139C384.656 208.156 384.557 208.162 384.375 208.162C383.719 208.162 383.438 207.846 383.438 207.102V203.527H384.844V202.684H383.438V201.049H382.43Z" fill="#6F7682"/>
<path d="M358.188 227.305H352.906V224.078H357.898V222.477H352.906V219.422H358.188V217.727H350.891V229H358.188V227.305ZM365.121 229.281C367.722 229.281 369.628 227.742 369.894 225.461H367.91C367.636 226.727 366.55 227.531 365.121 227.531C363.199 227.531 362.003 225.93 362.003 223.359C362.003 220.797 363.199 219.195 365.113 219.195C366.535 219.195 367.621 220.078 367.902 221.438H369.886C369.652 219.102 367.675 217.445 365.113 217.445C361.917 217.445 359.941 219.703 359.941 223.367C359.941 227.016 361.925 229.281 365.121 229.281ZM371.546 221.062H373.437C373.437 219.875 374.218 219.062 375.444 219.062C376.624 219.062 377.327 219.852 377.327 220.875C377.327 221.734 376.983 222.273 375.562 223.711L371.655 227.641V229H379.483V227.328H374.39V227.195L376.812 224.812C378.749 222.914 379.319 222 379.319 220.688C379.319 218.812 377.796 217.445 375.554 217.445C373.202 217.445 371.546 218.93 371.546 221.062ZM387.686 229V217.727H385.67V229H387.686ZM389.994 229H391.931V224.023C391.931 222.742 392.658 221.938 393.814 221.938C394.994 221.938 395.541 222.602 395.541 223.93V229H397.478V223.477C397.478 221.445 396.439 220.297 394.533 220.297C393.259 220.297 392.4 220.875 391.994 221.828H391.861V220.461H389.994V229ZM399.31 222.898C399.31 224.18 400.083 224.93 401.724 225.305L403.239 225.656C404.052 225.844 404.419 226.156 404.419 226.641C404.419 227.289 403.739 227.734 402.763 227.734C401.794 227.734 401.193 227.344 401.005 226.711H399.091C399.239 228.25 400.583 229.172 402.716 229.172C404.849 229.172 406.357 228.086 406.357 226.453C406.357 225.195 405.599 224.5 403.966 224.125L402.458 223.789C401.599 223.586 401.193 223.281 401.193 222.797C401.193 222.164 401.857 221.734 402.739 221.734C403.646 221.734 404.216 222.125 404.357 222.727H406.177C406.036 221.188 404.763 220.297 402.732 220.297C400.716 220.297 399.31 221.367 399.31 222.898ZM408.602 218.367V220.516H407.251V222.023H408.602V226.734C408.602 228.383 409.383 229.039 411.344 229.039C411.719 229.039 412.079 229.008 412.36 228.953V227.469C412.126 227.492 411.977 227.508 411.704 227.508C410.891 227.508 410.532 227.125 410.532 226.273V222.023H412.36V220.516H410.532V218.367H408.602ZM416.379 229.141C417.496 229.141 418.434 228.656 418.91 227.828H419.043V229H420.91V223.164C420.91 221.359 419.676 220.297 417.481 220.297C415.449 220.297 414.035 221.25 413.879 222.742H415.707C415.887 222.156 416.496 221.836 417.387 221.836C418.434 221.836 418.996 222.312 418.996 223.164V223.898L416.793 224.031C414.715 224.148 413.551 225.047 413.551 226.578C413.551 228.141 414.731 229.141 416.379 229.141ZM416.949 227.648C416.09 227.648 415.473 227.219 415.473 226.484C415.473 225.773 415.981 225.375 417.067 225.305L418.996 225.172V225.867C418.996 226.883 418.121 227.648 416.949 227.648ZM422.976 229H424.914V224.023C424.914 222.742 425.64 221.938 426.797 221.938C427.976 221.938 428.523 222.602 428.523 223.93V229H430.461V223.477C430.461 221.445 429.422 220.297 427.515 220.297C426.242 220.297 425.382 220.875 424.976 221.828H424.843V220.461H422.976V229ZM439.87 223.312C439.667 221.547 438.339 220.297 436.144 220.297C433.573 220.297 432.066 221.945 432.066 224.711C432.066 227.508 433.581 229.172 436.152 229.172C438.316 229.172 439.659 227.969 439.87 226.203H438.027C437.823 227.102 437.152 227.578 436.144 227.578C434.823 227.578 434.027 226.523 434.027 224.711C434.027 222.93 434.816 221.883 436.144 221.883C437.206 221.883 437.847 222.484 438.027 223.312H439.87ZM447.022 226.664C446.741 227.305 446.077 227.664 445.116 227.664C443.842 227.664 443.022 226.758 442.975 225.312V225.211H448.944V224.594C448.944 221.914 447.483 220.297 445.046 220.297C442.569 220.297 441.03 222.023 441.03 224.766C441.03 227.5 442.546 229.172 445.061 229.172C447.077 229.172 448.507 228.203 448.858 226.664H447.022ZM445.038 221.805C446.202 221.805 446.967 222.625 447.007 223.922H442.983C443.069 222.641 443.882 221.805 445.038 221.805ZM450.424 222.898C450.424 224.18 451.198 224.93 452.838 225.305L454.354 225.656C455.166 225.844 455.533 226.156 455.533 226.641C455.533 227.289 454.854 227.734 453.877 227.734C452.908 227.734 452.307 227.344 452.119 226.711H450.205C450.354 228.25 451.698 229.172 453.83 229.172C455.963 229.172 457.471 228.086 457.471 226.453C457.471 225.195 456.713 224.5 455.08 224.125L453.573 223.789C452.713 223.586 452.307 223.281 452.307 222.797C452.307 222.164 452.971 221.734 453.854 221.734C454.76 221.734 455.33 222.125 455.471 222.727H457.291C457.151 221.188 455.877 220.297 453.846 220.297C451.83 220.297 450.424 221.367 450.424 222.898Z" fill="black"/>
<rect x="309" y="180.5" width="166" height="69" rx="2.5" stroke="#1563FF"/>
</g>
<defs>
<filter id="filter0_dd_5487_14217" x="128.5" y="176" width="158" height="86" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_5487_14217"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="4"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"/>
<feBlend mode="normal" in2="effect1_dropShadow_5487_14217" result="effect2_dropShadow_5487_14217"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_5487_14217" result="shape"/>
</filter>
<filter id="filter1_dd_5487_14217" x="300.5" y="176" width="183" height="86" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_5487_14217"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="4"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"/>
<feBlend mode="normal" in2="effect1_dropShadow_5487_14217" result="effect2_dropShadow_5487_14217"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_5487_14217" result="shape"/>
</filter>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 39 KiB

@@ -0,0 +1,49 @@
<svg width="240" height="198" viewBox="0 0 240 198" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="0.5" y="0.5" width="151" height="65" rx="2.5" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 16.25C18 15.0074 19.0074 14 20.25 14H26.75C27.9926 14 29 15.0074 29 16.25V18.3622L31.0506 19.8147C31.6461 20.2365 32.0001 20.921 32.0001 21.6507L32.0001 26.7501C32.0001 27.4404 31.4404 28.0001 30.7501 28.0001H28.2501C28.0421 28.0001 27.854 27.9154 27.7181 27.7788C27.5833 27.6432 27.5 27.4563 27.5 27.25V16.25C27.5 15.8358 27.1642 15.5 26.75 15.5H20.25C19.8358 15.5 19.5 15.8358 19.5 16.25V27.25C19.5 27.6642 19.1642 28 18.75 28C18.3358 28 18 27.6642 18 27.25V16.25ZM29 26.5001V20.2004L30.1836 21.0387C30.3821 21.1793 30.5001 21.4075 30.5001 21.6507L30.5001 26.5001H29Z" fill="#BAC1CC"/>
<path d="M21.75 23.5498C21.3634 23.5498 21.05 23.8632 21.05 24.2498V27.2498C21.05 27.6364 21.3634 27.9498 21.75 27.9498C22.1366 27.9498 22.45 27.6364 22.45 27.2498V24.9498H24.55V27.2498C24.55 27.6364 24.8634 27.9498 25.25 27.9498C25.6366 27.9498 25.95 27.6364 25.95 27.2498V24.2498C25.95 23.8632 25.6366 23.5498 25.25 23.5498H21.75Z" fill="#BAC1CC"/>
<path d="M21.25 17.75C21.25 17.3358 21.5858 17 22 17H22.25C22.6642 17 23 17.3358 23 17.75C23 18.1642 22.6642 18.5 22.25 18.5H22C21.5858 18.5 21.25 18.1642 21.25 17.75Z" fill="#BAC1CC"/>
<path d="M24.75 17C24.3358 17 24 17.3358 24 17.75C24 18.1642 24.3358 18.5 24.75 18.5H25C25.4142 18.5 25.75 18.1642 25.75 17.75C25.75 17.3358 25.4142 17 25 17H24.75Z" fill="#BAC1CC"/>
<path d="M21.25 19.75C21.25 19.3358 21.5858 19 22 19H22.25C22.6642 19 23 19.3358 23 19.75C23 20.1642 22.6642 20.5 22.25 20.5H22C21.5858 20.5 21.25 20.1642 21.25 19.75Z" fill="#BAC1CC"/>
<path d="M24.75 19C24.3358 19 24 19.3358 24 19.75C24 20.1642 24.3358 20.5 24.75 20.5H25C25.4142 20.5 25.75 20.1642 25.75 19.75C25.75 19.3358 25.4142 19 25 19H24.75Z" fill="#BAC1CC"/>
<path d="M21.25 21.75C21.25 21.3358 21.5858 21 22 21H22.25C22.6642 21 23 21.3358 23 21.75C23 22.1642 22.6642 22.5 22.25 22.5H22C21.5858 22.5 21.25 22.1642 21.25 21.75Z" fill="#BAC1CC"/>
<path d="M24.75 21C24.3358 21 24 21.3358 24 21.75C24 22.1642 24.3358 22.5 24.75 22.5H25C25.4142 22.5 25.75 22.1642 25.75 21.75C25.75 21.3358 25.4142 21 25 21H24.75Z" fill="#BAC1CC"/>
<path d="M45.6289 16.3457C43.2383 16.3457 41.75 18.0508 41.75 20.7695C41.75 23.4766 43.2031 25.1992 45.6289 25.1992C48.043 25.1992 49.5078 23.4707 49.5078 20.7695C49.5078 18.0566 48.0312 16.3457 45.6289 16.3457ZM45.6289 17.3184C47.3574 17.3184 48.4238 18.6543 48.4238 20.7695C48.4238 22.8672 47.3633 24.2266 45.6289 24.2266C43.8711 24.2266 42.834 22.8672 42.834 20.7695C42.834 18.6543 43.9062 17.3184 45.6289 17.3184ZM51.207 25H52.2148V21.0859C52.2148 20.1953 52.9121 19.5508 53.873 19.5508C54.0723 19.5508 54.4355 19.5859 54.5176 19.6094V18.6016C54.3887 18.584 54.1777 18.5723 54.0137 18.5723C53.1758 18.5723 52.4492 19.0059 52.2617 19.6211H52.168V18.6836H51.207V25ZM58.2031 27.4258C59.9258 27.4258 61.0156 26.5234 61.0156 25.1113V18.6836H60.0547V19.6855H59.9609C59.5977 19.0059 58.8184 18.5723 57.9336 18.5723C56.3105 18.5723 55.2852 19.8555 55.2852 21.748C55.2852 23.6406 56.2988 24.9062 57.9336 24.9062C58.8008 24.9062 59.5156 24.5137 59.9141 23.8164H60.0078V25.0586C60.0078 25.9902 59.334 26.5469 58.2031 26.5469C57.2949 26.5469 56.7324 26.2129 56.6211 25.6973H55.5547C55.707 26.7402 56.6797 27.4258 58.2031 27.4258ZM58.1562 24.0156C56.9844 24.0156 56.3281 23.125 56.3281 21.748C56.3281 20.3711 56.9844 19.4805 58.1562 19.4805C59.3223 19.4805 60.0312 20.3711 60.0312 21.748C60.0312 23.125 59.3281 24.0156 58.1562 24.0156Z" fill="#6F7682"/>
<path d="M41.875 41.9453C41.9766 43.9844 43.6875 45.2812 46.2734 45.2812C49.0078 45.2812 50.7031 43.9219 50.7031 41.7344C50.7031 40.0234 49.7422 39.0703 47.4531 38.5469L46.1562 38.25C44.7578 37.9219 44.1875 37.4766 44.1875 36.7031C44.1875 35.7266 45.0469 35.0859 46.3438 35.0859C47.5781 35.0859 48.4531 35.7188 48.5938 36.7266H50.5234C50.4297 34.7969 48.7188 33.4453 46.3516 33.4453C43.8281 33.4453 42.1562 34.8047 42.1562 36.8359C42.1562 38.5078 43.1172 39.5156 45.1641 39.9844L46.625 40.3203C48.0703 40.6562 48.6875 41.1562 48.6875 41.9766C48.6875 42.9375 47.7266 43.6328 46.3984 43.6328C44.9688 43.6328 43.9688 42.9766 43.8438 41.9453H41.875ZM58.0659 42.6641C57.7847 43.3047 57.1206 43.6641 56.1597 43.6641C54.8862 43.6641 54.0659 42.7578 54.0191 41.3125V41.2109H59.9878V40.5938C59.9878 37.9141 58.5269 36.2969 56.0894 36.2969C53.6128 36.2969 52.0737 38.0234 52.0737 40.7656C52.0737 43.5 53.5894 45.1719 56.105 45.1719C58.1206 45.1719 59.5503 44.2031 59.9019 42.6641H58.0659ZM56.0816 37.8047C57.2456 37.8047 58.0112 38.625 58.0503 39.9219H54.0269C54.1128 38.6406 54.9253 37.8047 56.0816 37.8047ZM69.0459 39.3125C68.8428 37.5469 67.5147 36.2969 65.3194 36.2969C62.7491 36.2969 61.2412 37.9453 61.2412 40.7109C61.2412 43.5078 62.7569 45.1719 65.3272 45.1719C67.4912 45.1719 68.835 43.9688 69.0459 42.2031H67.2022C66.9991 43.1016 66.3272 43.5781 65.3194 43.5781C63.9991 43.5781 63.2022 42.5234 63.2022 40.7109C63.2022 38.9297 63.9912 37.8828 65.3194 37.8828C66.3819 37.8828 67.0225 38.4844 67.2022 39.3125H69.0459ZM75.69 33.4453C72.4166 33.4453 70.3541 35.7188 70.3541 39.3594C70.3541 42.9922 72.3853 45.2812 75.69 45.2812C78.9791 45.2812 81.0181 42.9922 81.0181 39.3594C81.0181 35.7188 78.9713 33.4453 75.69 33.4453ZM75.69 35.1875C77.69 35.1875 78.9634 36.8047 78.9634 39.3594C78.9634 41.8984 77.6978 43.5391 75.69 43.5391C73.6588 43.5391 72.4166 41.8984 72.4166 39.3594C72.4166 36.8047 73.69 35.1875 75.69 35.1875ZM87.5137 36.3203C86.3419 36.3203 85.3497 36.9062 84.8575 37.875H84.7247V36.4609H82.8575V47.8359H84.795V43.7031H84.9278C85.3653 44.6094 86.3106 45.1406 87.5372 45.1406C89.6934 45.1406 91.0372 43.4453 91.0372 40.7344C91.0372 38 89.6778 36.3203 87.5137 36.3203ZM86.9044 43.5312C85.5841 43.5312 84.7637 42.4609 84.7559 40.7344C84.7637 39.0078 85.5919 37.9375 86.9122 37.9375C88.2403 37.9375 89.045 38.9844 89.045 40.7344C89.045 42.4844 88.2481 43.5312 86.9044 43.5312ZM92.5172 38.8984C92.5172 40.1797 93.2906 40.9297 94.9313 41.3047L96.4469 41.6562C97.2594 41.8438 97.6266 42.1562 97.6266 42.6406C97.6266 43.2891 96.9469 43.7344 95.9703 43.7344C95.0016 43.7344 94.4 43.3438 94.2125 42.7109H92.2984C92.4469 44.25 93.7906 45.1719 95.9234 45.1719C98.0563 45.1719 99.5641 44.0859 99.5641 42.4531C99.5641 41.1953 98.8063 40.5 97.1734 40.125L95.6656 39.7891C94.8063 39.5859 94.4 39.2812 94.4 38.7969C94.4 38.1641 95.0641 37.7344 95.9469 37.7344C96.8531 37.7344 97.4234 38.125 97.5641 38.7266H99.3844C99.2438 37.1875 97.9703 36.2969 95.9391 36.2969C93.9234 36.2969 92.5172 37.3672 92.5172 38.8984Z" fill="#6F7682"/>
<rect x="0.5" y="0.5" width="151" height="65" rx="2.5" stroke="#BAC1CC"/>
<path d="M19.5 87.75C19.5 87.3358 19.8358 87 20.25 87C20.6642 87 21 87.3358 21 87.75V92.25C21 92.7141 21.1844 93.1592 21.5126 93.4874C21.8408 93.8156 22.2859 94 22.75 94H28.4393L26.2197 91.7803C25.9268 91.4874 25.9268 91.0126 26.2197 90.7197C26.5126 90.4268 26.9874 90.4268 27.2803 90.7197L30.7803 94.2197C31.0732 94.5126 31.0732 94.9874 30.7803 95.2803L27.2803 98.7803C26.9874 99.0732 26.5126 99.0732 26.2197 98.7803C25.9268 98.4874 25.9268 98.0126 26.2197 97.7197L28.4393 95.5H22.75C21.888 95.5 21.0614 95.1576 20.4519 94.5481C19.8424 93.9386 19.5 93.112 19.5 92.25V87.75Z" fill="#6F7682"/>
<rect x="40.5" y="60.5" width="151" height="65" rx="2.5" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M59.25 74C58.5596 74 58 74.5596 58 75.25V78.75C58 79.4404 58.5596 80 59.25 80H62.75C63.4404 80 64 79.4404 64 78.75V75.25C64 74.5596 63.4404 74 62.75 74H59.25ZM59.5 78.5V75.5H62.5V78.5H59.5Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M67.25 74C66.5596 74 66 74.5596 66 75.25V78.75C66 79.4404 66.5596 80 67.25 80H70.75C71.4404 80 72 79.4404 72 78.75V75.25C72 74.5596 71.4404 74 70.75 74H67.25ZM67.5 78.5V75.5H70.5V78.5H67.5Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M66 83.25C66 82.5596 66.5596 82 67.25 82H70.75C71.4404 82 72 82.5596 72 83.25V86.75C72 87.4404 71.4404 88 70.75 88H67.25C66.5596 88 66 87.4404 66 86.75V83.25ZM67.5 83.5V86.5H70.5V83.5H67.5Z" fill="#BAC1CC"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M59.25 82C58.5596 82 58 82.5596 58 83.25V86.75C58 87.4404 58.5596 88 59.25 88H62.75C63.4404 88 64 87.4404 64 86.75V83.25C64 82.5596 63.4404 82 62.75 82H59.25ZM59.5 86.5V83.5H62.5V86.5H59.5Z" fill="#BAC1CC"/>
<path d="M82.0781 76.5449V85H83.1328V81.9824H85.2598C86.8477 81.9824 87.9785 80.8633 87.9785 79.2812C87.9785 77.6699 86.8711 76.5449 85.2715 76.5449H82.0781ZM83.1328 77.4824H84.9961C86.2207 77.4824 86.8945 78.1211 86.8945 79.2812C86.8945 80.4004 86.1973 81.0449 84.9961 81.0449H83.1328V77.4824ZM89.5781 85H90.5859V81.0859C90.5859 80.1953 91.2832 79.5508 92.2441 79.5508C92.4434 79.5508 92.8066 79.5859 92.8887 79.6094V78.6016C92.7598 78.584 92.5488 78.5723 92.3848 78.5723C91.5469 78.5723 90.8203 79.0059 90.6328 79.6211H90.5391V78.6836H89.5781V85ZM96.5684 85.1113C98.3672 85.1113 99.4805 83.8691 99.4805 81.8418C99.4805 79.8086 98.3672 78.5723 96.5684 78.5723C94.7695 78.5723 93.6562 79.8086 93.6562 81.8418C93.6562 83.8691 94.7695 85.1113 96.5684 85.1113ZM96.5684 84.2031C95.373 84.2031 94.6992 83.3359 94.6992 81.8418C94.6992 80.3418 95.373 79.4805 96.5684 79.4805C97.7637 79.4805 98.4375 80.3418 98.4375 81.8418C98.4375 83.3359 97.7637 84.2031 96.5684 84.2031ZM101.602 77.4648C101.988 77.4648 102.305 77.1484 102.305 76.7617C102.305 76.375 101.988 76.0586 101.602 76.0586C101.215 76.0586 100.898 76.375 100.898 76.7617C100.898 77.1484 101.215 77.4648 101.602 77.4648ZM102.094 78.6836H101.086V85.3281C101.086 86.0254 100.852 86.3066 100.137 86.3066H99.9844V87.168H100.16C101.484 87.168 102.094 86.6113 102.094 85.3105V78.6836ZM108.199 83.3652C107.936 83.9219 107.385 84.2207 106.57 84.2207C105.498 84.2207 104.801 83.4297 104.748 82.1816V82.1348H109.289V81.748C109.289 79.7852 108.252 78.5723 106.547 78.5723C104.812 78.5723 103.699 79.8613 103.699 81.8477C103.699 83.8457 104.795 85.1113 106.547 85.1113C107.93 85.1113 108.914 84.4434 109.207 83.3652H108.199ZM106.535 79.4629C107.537 79.4629 108.205 80.2012 108.229 81.3203H104.748C104.824 80.2012 105.527 79.4629 106.535 79.4629ZM116.098 80.6172C115.922 79.4922 114.984 78.5723 113.449 78.5723C111.68 78.5723 110.555 79.8496 110.555 81.8184C110.555 83.8281 111.686 85.1113 113.455 85.1113C114.973 85.1113 115.916 84.2559 116.098 83.0957H115.078C114.891 83.8105 114.299 84.2031 113.449 84.2031C112.324 84.2031 111.598 83.2773 111.598 81.8184C111.598 80.3887 112.312 79.4805 113.449 79.4805C114.357 79.4805 114.914 79.9902 115.078 80.6172H116.098ZM118.125 77.0488V78.6836H117.105V79.5273H118.125V83.3594C118.125 84.5664 118.646 85.0469 119.947 85.0469C120.146 85.0469 120.34 85.0234 120.539 84.9883V84.1387C120.352 84.1562 120.252 84.1621 120.07 84.1621C119.414 84.1621 119.133 83.8457 119.133 83.1016V79.5273H120.539V78.6836H119.133V77.0488H118.125Z" fill="#6F7682"/>
<path d="M89.6641 105H91.8281L87.8203 93.7266H85.5547L81.5547 105H83.5938L84.5625 102.086H88.7109L89.6641 105ZM86.5781 95.8438H86.7109L88.2422 100.531H85.0312L86.5781 95.8438ZM99.0894 96.9297H99.2066L101.503 105H103.394L106.417 93.7266H104.332L102.402 102.188H102.292L100.042 93.7266H98.2534L96.0347 102.188H95.9175L93.9878 93.7266H91.8862L94.9097 105H96.8081L99.0894 96.9297ZM107.663 101.945C107.765 103.984 109.476 105.281 112.062 105.281C114.796 105.281 116.491 103.922 116.491 101.734C116.491 100.023 115.53 99.0703 113.241 98.5469L111.944 98.25C110.546 97.9219 109.976 97.4766 109.976 96.7031C109.976 95.7266 110.835 95.0859 112.132 95.0859C113.366 95.0859 114.241 95.7188 114.382 96.7266H116.312C116.218 94.7969 114.507 93.4453 112.14 93.4453C109.616 93.4453 107.944 94.8047 107.944 96.8359C107.944 98.5078 108.905 99.5156 110.952 99.9844L112.413 100.32C113.858 100.656 114.476 101.156 114.476 101.977C114.476 102.938 113.515 103.633 112.187 103.633C110.757 103.633 109.757 102.977 109.632 101.945H107.663Z" fill="#6F7682"/>
<rect x="40.5" y="60.5" width="151" height="65" rx="2.5" stroke="#BAC1CC"/>
<path d="M59.5 147.75C59.5 147.336 59.8358 147 60.25 147C60.6642 147 61 147.336 61 147.75V152.25C61 152.714 61.1844 153.159 61.5126 153.487C61.8408 153.816 62.2859 154 62.75 154H68.4393L66.2197 151.78C65.9268 151.487 65.9268 151.013 66.2197 150.72C66.5126 150.427 66.9874 150.427 67.2803 150.72L70.7803 154.22C71.0732 154.513 71.0732 154.987 70.7803 155.28L67.2803 158.78C66.9874 159.073 66.5126 159.073 66.2197 158.78C65.9268 158.487 65.9268 158.013 66.2197 157.72L68.4393 155.5H62.75C61.888 155.5 61.0614 155.158 60.4519 154.548C59.8424 153.939 59.5 153.112 59.5 152.25V147.75Z" fill="#6F7682"/>
<g filter="url(#filter0_dd_2219_10384)">
<rect x="81" y="121" width="150" height="64" rx="2" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M105 139C103.895 139 103 139.895 103 141C103 142.105 103.895 143 105 143C106.105 143 107 142.105 107 141C107 139.895 106.105 139 105 139ZM104.5 141C104.5 140.724 104.724 140.5 105 140.5C105.276 140.5 105.5 140.724 105.5 141C105.5 141.276 105.276 141.5 105 141.5C104.724 141.5 104.5 141.276 104.5 141Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M100 141C100 138.239 102.239 136 105 136C107.761 136 110 138.239 110 141C110 143.761 107.761 146 105 146C102.239 146 100 143.761 100 141ZM105 137.5C103.067 137.5 101.5 139.067 101.5 141C101.5 142.933 103.067 144.5 105 144.5C106.933 144.5 108.5 142.933 108.5 141C108.5 139.067 106.933 137.5 105 137.5Z" fill="black"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M97 141C97 136.582 100.582 133 105 133C109.418 133 113 136.582 113 141C113 145.418 109.418 149 105 149C100.582 149 97 145.418 97 141ZM105 134.5C101.41 134.5 98.5 137.41 98.5 141C98.5 144.59 101.41 147.5 105 147.5C108.59 147.5 111.5 144.59 111.5 141C111.5 137.41 108.59 134.5 105 134.5Z" fill="black"/>
<path d="M125.33 145V137.494H128.055V136.545H121.551V137.494H124.275V145H125.33ZM130.082 145.111C130.926 145.111 131.617 144.742 132.027 144.068H132.121V145H133.082V140.676C133.082 139.363 132.221 138.572 130.68 138.572C129.332 138.572 128.336 139.24 128.201 140.254H129.221C129.361 139.756 129.889 139.469 130.645 139.469C131.588 139.469 132.074 139.896 132.074 140.676V141.25L130.252 141.361C128.781 141.449 127.949 142.1 127.949 143.23C127.949 144.385 128.857 145.111 130.082 145.111ZM130.27 144.227C129.537 144.227 128.992 143.852 128.992 143.207C128.992 142.574 129.414 142.24 130.375 142.176L132.074 142.064V142.645C132.074 143.547 131.307 144.227 130.27 144.227ZM134.945 145H135.953V141.086C135.953 140.195 136.65 139.551 137.611 139.551C137.811 139.551 138.174 139.586 138.256 139.609V138.602C138.127 138.584 137.916 138.572 137.752 138.572C136.914 138.572 136.188 139.006 136 139.621H135.906V138.684H134.945V145ZM141.941 147.426C143.664 147.426 144.754 146.523 144.754 145.111V138.684H143.793V139.686H143.699C143.336 139.006 142.557 138.572 141.672 138.572C140.049 138.572 139.023 139.855 139.023 141.748C139.023 143.641 140.037 144.906 141.672 144.906C142.539 144.906 143.254 144.514 143.652 143.816H143.746V145.059C143.746 145.99 143.072 146.547 141.941 146.547C141.033 146.547 140.471 146.213 140.359 145.697H139.293C139.445 146.74 140.418 147.426 141.941 147.426ZM141.895 144.016C140.723 144.016 140.066 143.125 140.066 141.748C140.066 140.371 140.723 139.48 141.895 139.48C143.061 139.48 143.77 140.371 143.77 141.748C143.77 143.125 143.066 144.016 141.895 144.016ZM150.836 143.365C150.572 143.922 150.021 144.221 149.207 144.221C148.135 144.221 147.438 143.43 147.385 142.182V142.135H151.926V141.748C151.926 139.785 150.889 138.572 149.184 138.572C147.449 138.572 146.336 139.861 146.336 141.848C146.336 143.846 147.432 145.111 149.184 145.111C150.566 145.111 151.551 144.443 151.844 143.365H150.836ZM149.172 139.463C150.174 139.463 150.842 140.201 150.865 141.32H147.385C147.461 140.201 148.164 139.463 149.172 139.463ZM153.93 137.049V138.684H152.91V139.527H153.93V143.359C153.93 144.566 154.451 145.047 155.752 145.047C155.951 145.047 156.145 145.023 156.344 144.988V144.139C156.156 144.156 156.057 144.162 155.875 144.162C155.219 144.162 154.938 143.846 154.938 143.102V139.527H156.344V138.684H154.938V137.049H153.93Z" fill="black"/>
<path d="M127.211 165V155.422H130.688V153.727H121.727V155.422H125.195V165H127.211ZM136.378 162.664C136.097 163.305 135.433 163.664 134.472 163.664C133.199 163.664 132.378 162.758 132.332 161.312V161.211H138.3V160.594C138.3 157.914 136.839 156.297 134.402 156.297C131.925 156.297 130.386 158.023 130.386 160.766C130.386 163.5 131.902 165.172 134.417 165.172C136.433 165.172 137.863 164.203 138.214 162.664H136.378ZM134.394 157.805C135.558 157.805 136.324 158.625 136.363 159.922H132.339C132.425 158.641 133.238 157.805 134.394 157.805ZM139.78 158.898C139.78 160.18 140.554 160.93 142.194 161.305L143.71 161.656C144.522 161.844 144.89 162.156 144.89 162.641C144.89 163.289 144.21 163.734 143.233 163.734C142.265 163.734 141.663 163.344 141.476 162.711H139.562C139.71 164.25 141.054 165.172 143.187 165.172C145.319 165.172 146.827 164.086 146.827 162.453C146.827 161.195 146.069 160.5 144.437 160.125L142.929 159.789C142.069 159.586 141.663 159.281 141.663 158.797C141.663 158.164 142.327 157.734 143.21 157.734C144.116 157.734 144.687 158.125 144.827 158.727H146.647C146.507 157.188 145.233 156.297 143.202 156.297C141.187 156.297 139.78 157.367 139.78 158.898ZM149.073 154.367V156.516H147.721V158.023H149.073V162.734C149.073 164.383 149.854 165.039 151.815 165.039C152.19 165.039 152.549 165.008 152.831 164.953V163.469C152.596 163.492 152.448 163.508 152.174 163.508C151.362 163.508 151.003 163.125 151.003 162.273V158.023H152.831V156.516H151.003V154.367H149.073ZM163.517 165V155.422H166.994V153.727H158.033V155.422H161.502V165H163.517ZM169.435 165.141C170.552 165.141 171.489 164.656 171.966 163.828H172.099V165H173.966V159.164C173.966 157.359 172.732 156.297 170.536 156.297C168.505 156.297 167.091 157.25 166.935 158.742H168.763C168.943 158.156 169.552 157.836 170.443 157.836C171.489 157.836 172.052 158.312 172.052 159.164V159.898L169.849 160.031C167.771 160.148 166.607 161.047 166.607 162.578C166.607 164.141 167.786 165.141 169.435 165.141ZM170.005 163.648C169.146 163.648 168.528 163.219 168.528 162.484C168.528 161.773 169.036 161.375 170.122 161.305L172.052 161.172V161.867C172.052 162.883 171.177 163.648 170.005 163.648ZM176.032 165H177.969V160.039C177.969 158.836 178.844 158.055 180.102 158.055C180.43 158.055 180.946 158.109 181.094 158.164V156.398C180.915 156.352 180.571 156.32 180.29 156.32C179.188 156.32 178.266 156.945 178.032 157.789H177.899V156.461H176.032V165ZM185.871 168.25C188.363 168.25 189.942 167.008 189.942 165.047V156.461H188.074V157.828H187.942C187.473 156.898 186.457 156.32 185.293 156.32C183.113 156.32 181.762 158.023 181.762 160.641C181.762 163.203 183.106 164.875 185.262 164.875C186.449 164.875 187.379 164.375 187.871 163.453H188.004V165.078C188.004 166.164 187.231 166.805 185.903 166.805C184.84 166.805 184.153 166.422 184.028 165.82H182.082C182.238 167.289 183.676 168.25 185.871 168.25ZM185.871 163.336C184.52 163.336 183.754 162.289 183.754 160.633C183.754 158.984 184.52 157.938 185.871 157.938C187.215 157.938 188.035 158.984 188.035 160.641C188.035 162.289 187.223 163.336 185.871 163.336ZM197.625 162.664C197.343 163.305 196.679 163.664 195.718 163.664C194.445 163.664 193.625 162.758 193.578 161.312V161.211H199.547V160.594C199.547 157.914 198.086 156.297 195.648 156.297C193.172 156.297 191.632 158.023 191.632 160.766C191.632 163.5 193.148 165.172 195.664 165.172C197.679 165.172 199.109 164.203 199.461 162.664H197.625ZM195.64 157.805C196.804 157.805 197.57 158.625 197.609 159.922H193.586C193.672 158.641 194.484 157.805 195.64 157.805ZM201.839 154.367V156.516H200.488V158.023H201.839V162.734C201.839 164.383 202.62 165.039 204.581 165.039C204.956 165.039 205.316 165.008 205.597 164.953V163.469C205.363 163.492 205.214 163.508 204.941 163.508C204.128 163.508 203.769 163.125 203.769 162.273V158.023H205.597V156.516H203.769V154.367H201.839Z" fill="black"/>
<rect x="80.5" y="120.5" width="151" height="65" rx="2.5" stroke="#1563FF"/>
</g>
<defs>
<filter id="filter0_dd_2219_10384" x="72" y="116" width="168" height="82" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="2"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_2219_10384"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="4"/>
<feGaussianBlur stdDeviation="4"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.05 0"/>
<feBlend mode="normal" in2="effect1_dropShadow_2219_10384" result="effect2_dropShadow_2219_10384"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect2_dropShadow_2219_10384" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 21 KiB

@@ -8,7 +8,7 @@ module('Integration | Component | Image', function (hooks) {
test('it renders', async function (assert) {
assert.expect(1);
await render(hbs`<Image @name="resource-creation" />`);
await render(hbs`<Image @name="logo-app" />`);
assert.ok(find('.image-container'));
});
});
@@ -41,3 +41,4 @@ clear-all-filters: Clear all filters
learn-more: Learn more
refresh: Refresh
remove-resources: Remove resources and save
do-this-later: Do this later
+9 -16
View File
@@ -53,24 +53,17 @@ themes:
dark: Dark
onboarding:
title: Onboarding
quick-start:
add-target:
titles:
choose-path: Welcome to Boundary
quick-setup: Quick setup
manual: Manual
create-resource: Creating your first target
resource-setup-info: We’ll set up scopes & a host catalog for you
host-address: Host Address
target-port: Target Port
toggle-resource-info: I have an IP address and port for my first host
have-a-target: Have a target to test?
target-address: Target Address
target-port: Default Port
target-setup-info: We’ll set up scopes for you
descriptions:
choose-path: You’ve taken the first step towards making your infrastructure more secure. How do you want to get started?
quick-setup: I want to see how Boundary works, help me set up my first scopes and targets.
manual: I want to set up my first scopes and targets myself, starting with my first org.
create-resource: In Boundary, a “target” defines a server that your users will connect to.
resource-setup-info: Hosts are organized in host catalogs, which live in projects, which live in orgs. We will create these for you, and they can be edited or deleted later.
host-address: 'Example: “192.168.0.1” or IPv6'
target-port: 'Example: “22”'
setup-first-target: In Boundary, a “target” defines a server that your users will connect to. We can help you set up your first target for proof-of-concept testing, or you can skip this step if you don’t want to do it right now.
target-address: Host name or IP address.
target-port: The default port on which to connect.
target-setup-info: Targets live in projects, and projects live in orgs. We will create these example scopes for you but they can be edited or deleted later.
success:
titles:
connect: Connect to your target
+3 -2
View File
@@ -19,5 +19,6 @@ authentication-failed:
title: Authentication Failed
cluster-url-verification-failed:
description: Unable to connect to the specified cluster URL. Please check the URL and try again.
quick-setup-failed:
description: We're sorry, quick setup was unable to generate all resources.
onboarding-failed:
description: We're sorry, onboarding was unable to generate a TCP target.
required-field: This is a required field.
@@ -1,37 +0,0 @@
<Rose::Form
class='full-width'
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@onSubmit={{fn @submit this.path}}
as |form|
>
<Hds::Form::RadioCard::Group @name='path' as |G|>
<G.RadioCard
@maxWidth='20rem'
@checked={{eq this.path 'guided'}}
@value='guided'
{{on 'input' (fn this.toggleRadio 'guided')}}
as |R|
>
<R.Label>{{t 'onboarding.quick-start.titles.quick-setup'}}</R.Label>
<R.Description>{{t
'onboarding.quick-start.descriptions.quick-setup'
}}</R.Description>
</G.RadioCard>
<G.RadioCard
@maxWidth='20rem'
@checked={{eq this.path 'manual'}}
@value='manual'
{{on 'input' (fn this.toggleRadio 'manual')}}
as |R|
>
<R.Label>{{t 'onboarding.quick-start.titles.manual'}}</R.Label>
<R.Description>{{t
'onboarding.quick-start.descriptions.manual'
}}</R.Description>
</G.RadioCard>
</Hds::Form::RadioCard::Group>
<form.actions @submitText={{t 'actions.next'}} @showCancel={{false}} />
</Rose::Form>
@@ -1,20 +0,0 @@
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class FormOnboardingChoosePathComponent extends Component {
// =properties
/**
* Onboarding path property
* @type {string}
*/
@tracked path = 'guided';
// =actions
@action
toggleRadio(path) {
this.path = path;
}
}
@@ -1,46 +0,0 @@
<Rose::Form
class='full-width'
@cancel={{@cancel}}
@disabled={{@model.isSaving}}
@onSubmit={{fn @submit this.hostAddress this.targetPort}}
as |form|
>
<form.checkbox
@label={{t 'onboarding.quick-start.titles.toggle-resource-info'}}
@onChange={{this.toggleHostInfoSetup}}
/>
{{#if this.showHostInfo}}
<div class='create-resource-cards'>
<form.input
@name='hostAddress'
@type='text'
@value={{this.hostAddress}}
@label={{t 'onboarding.quick-start.titles.host-address'}}
@helperText={{t 'onboarding.quick-start.descriptions.host-address'}}
/>
<form.input
@name='targetPort'
@type='text'
@value={{this.targetPort}}
@label={{t 'onboarding.quick-start.titles.target-port'}}
@helperText={{t 'onboarding.quick-start.descriptions.target-port'}}
/>
</div>
{{/if}}
<form.fieldset>
<:title>{{t 'onboarding.quick-start.titles.resource-setup-info'}}</:title>
<:description>{{t
'onboarding.quick-start.descriptions.resource-setup-info'
}}
</:description>
<:body>
<Image @name='resource-creation' />
</:body>
</form.fieldset>
<form.actions @submitText={{t 'actions.next'}} @showCancel={{false}} />
</Rose::Form>
@@ -1,13 +0,0 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
export default class FormOnboardingComponent extends Component {
// =actions
@tracked showHostInfo = false;
@action
toggleHostInfoSetup() {
this.showHostInfo = !this.showHostInfo;
}
}
@@ -0,0 +1,63 @@
<Rose::Form class='full-width' @cancel={{@cancel}} @onSubmit={{this.submit}}>
<div class='create-resources-form'>
<Hds::Form::TextInput::Field
name='targetAddress'
@type='text'
@value={{this.targetAddress}}
@isRequired={{true}}
@isInvalid={{this.targetAddressInvalid}}
{{on 'input' (set-from-event this 'targetAddress')}}
as |F|
>
<F.Label>{{t 'onboarding.add-target.titles.target-address'}}</F.Label>
<F.HelperText>
{{t 'onboarding.add-target.descriptions.target-address'}}
</F.HelperText>
{{#if this.targetAddressInvalid}}
<F.Error as |E|>
<E.Message>{{t 'errors.required-field'}}</E.Message>
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
<Hds::Form::TextInput::Field
name='targetPort'
@type='text'
@value={{this.targetPort}}
@isRequired={{true}}
@isInvalid={{this.targetPortInvalid}}
{{on 'input' (set-from-event this 'targetPort')}}
as |F|
>
<F.Label>{{t 'onboarding.add-target.titles.target-port'}}</F.Label>
<F.HelperText>
{{t 'onboarding.add-target.descriptions.target-port'}}
</F.HelperText>
{{#if this.targetPortInvalid}}
<F.Error as |E|>
<E.Message>{{t 'errors.required-field'}}</E.Message>
</F.Error>
{{/if}}
</Hds::Form::TextInput::Field>
</div>
<Hds::Form::Fieldset as |F|>
<F.Legend>{{t 'onboarding.add-target.titles.target-setup-info'}}</F.Legend>
<F.Control>{{t
'onboarding.add-target.descriptions.target-setup-info'
}}</F.Control>
<F.Control><Image @name='ssh-target-creation' /></F.Control>
</Hds::Form::Fieldset>
<Hds::ButtonSet>
<Hds::Button @text='{{t "actions.save"}}' type='submit' />
<Hds::Button
@text='{{t "actions.do-this-later"}}'
@color='secondary'
name='cancel'
{{on 'click' @cancel}}
/>
</Hds::ButtonSet>
</Rose::Form>
@@ -0,0 +1,23 @@
import Component from '@glimmer/component';
import { action } from '@ember/object';
import { tracked } from '@glimmer/tracking';
export default class FormOnboardingComponent extends Component {
// =properties
@tracked targetAddress;
@tracked targetAddressInvalid = false;
@tracked targetPort;
@tracked targetPortInvalid = false;
// =actions
@action
submit() {
// Check targetAddress and targetPort are valid before submit
this.targetAddressInvalid = !this.targetAddress;
this.targetPortInvalid = !this.targetPort;
if (!this.targetAddressInvalid && !this.targetPortInvalid) {
// Call submit fn passed to the form
this.args.submit(this.targetAddress, this.targetPort);
}
}
}
+1 -6
View File
@@ -140,11 +140,6 @@ Router.map(function () {
});
this.route('onboarding', function () {
this.route('quick-setup', function () {
this.route('choose-path');
this.route('create-resources', function () {
this.route('success');
});
});
this.route('success');
});
});
+122 -12
View File
@@ -1,36 +1,146 @@
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { loading } from 'ember-loading';
import { notifyError } from 'core/decorators/notify';
import { TYPE_TARGET_TCP } from 'api/models/target';
export default class OnboardingRoute extends Route {
// =services
@service store;
@service session;
@service router;
@service intl;
// =methods
/**
* If arriving here unauthenticated, redirect to index for further processing.
* If arriving here unauthenticated, or has orgs redirect to index for further processing.
*/
beforeModel() {
if (!this.session.isAuthenticated) this.router.transitionTo('index');
async beforeModel() {
const orgs = await this.store.query('scope', {
scope_id: 'global',
});
if (!this.session.isAuthenticated || orgs.length)
this.router.transitionTo('index');
}
/**
* List all scopes (orgs) under global.
* Creare org, project, target and roles
*/
model() {
return this.store.query('scope', {
scope_id: 'global',
});
async model() {
return {
org: this.store.createRecord('scope', {
type: 'org',
scopeID: 'global',
name: 'SecOps',
description: 'Sample org created by quick setup',
}),
project: this.store.createRecord('scope', {
type: 'project',
name: 'AWS',
description: 'Sample project created by quick setup',
}),
target: this.store.createRecord('target', {
type: TYPE_TARGET_TCP,
name: 'Test target',
description: 'Sample target created by quick setup',
}),
role: this.store.createRecord('role', {
name: 'test_target_role',
}),
};
}
// =actions
@action
@loading
@notifyError(function () {
return this.intl.t('errors.onboarding-failed.description');
})
async createResources(targetAddress, targetPort) {
const { org, project, target, role } = this.currentModel;
await this.createOrg(org);
await this.createProject(org, project);
await this.createTarget(project, target, targetAddress, targetPort);
await this.createGrants(org, project, target, role);
// Redirect to success
this.router.transitionTo('onboarding.success');
}
/**
* If any orgs already exist, redirect to index to skip onboarding.
* Creates Org, if fails, redirects to Orgs empty list
* @param {Object} org
*/
redirect(model) {
// If there are orgs already created, redirect to index.
if (model.length) this.router.transitionTo('index');
async createOrg(org) {
try {
await org.save();
} catch (error) {
// Redirects to Orgs screen
this.router.transitionTo('scopes.scope', 'global');
throw new Error(error);
}
}
/**
* Creates Project, if fails redirects to Projects from Org empty list.
* @param {Object} org
* @param {Object} project
*/
async createProject(org, project) {
project.scopeID = org.id;
try {
await project.save();
} catch (error) {
// Redirects to Project screen
this.router.transitionTo('scopes.scope.scopes', project.scopeID);
throw new Error(error);
}
}
/**
* Creates a Target, if fails redirects to Targets empyt list.
* @param {Object} project
* @param {Object} target
* @param {Object} targetAddress
* @param {Object} targetPort
*/
async createTarget(project, target, targetAddress, targetPort) {
target.scopeID = project.id;
target.address = targetAddress;
target.default_port = targetPort;
try {
await target.save();
} catch (error) {
// Redirect to targets global
this.router.replaceWith('scopes.scope.targets', project.scopeID);
throw new Error(error);
}
}
async createGrants(org, project, target, role) {
role.scopeID = org.id;
role.grant_scope_id = project.id;
try {
await role.save();
await role.saveGrantStrings([
`type=target;actions=list`,
`id=${target.id};actions=authorize-session`,
]);
} catch (error) {
// Redirect to targets that belong to scope
this.router.replaceWith('scopes.scope.targets', project.scopeID);
throw new Error(error);
}
}
@action
async doLater() {
this.router.transitionTo('index');
}
}
@@ -1,24 +0,0 @@
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class OnboardingQuickSetupChoosePathRoute extends Route {
// =services
@service router;
// =actions
@action
choosePath(path = 'guided') {
switch (path) {
case 'guided':
this.router.transitionTo('onboarding.quick-setup.create-resources');
break;
case 'manual':
default:
this.router.transitionTo('scopes.scope.scopes.new', 'global');
break;
}
}
}
@@ -1,108 +0,0 @@
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import { loading } from 'ember-loading';
import { notifyError } from 'core/decorators/notify';
import { TYPE_TARGET_TCP } from 'api/models/target';
export default class OnboardingQuickSetupCreateResourcesRoute extends Route {
// =services
@service store;
@service router;
@service intl;
// =methods
async model() {
return {
org: this.store.createRecord('scope', {
type: 'org',
scopeID: 'global',
name: 'SecOps',
description: 'Sample org created by quick setup',
}),
project: this.store.createRecord('scope', {
type: 'project',
name: 'AWS',
description: 'Sample project created by quick setup',
}),
hostCatalog: this.store.createRecord('host-catalog', {
type: 'static',
name: 'US-East-1',
description: 'Sample host catalog created by quick setup',
}),
hostSet: this.store.createRecord('host-set', {
name: 'Prod-EC2',
description: 'Sample host set created by quick setup',
}),
host: this.store.createRecord('host', {
name: 'Instance-1',
description: 'Sample host created by quick setup',
}),
target: this.store.createRecord('target', {
type: TYPE_TARGET_TCP,
name: 'EC2 Instances',
description: 'Sample target created by quick setup',
}),
role: this.store.createRecord('role', {
name: 'ec2_connect_role',
}),
};
}
// =actions
@action
@loading
@notifyError(function () {
return this.intl.t('errors.quick-setup-failed.description');
})
async createResources(hostAddress, targetPort) {
try {
await this.createOnboardingResourcesAndRedirect(hostAddress, targetPort);
} catch (e) {
this.router.replaceWith('scopes.scope', 'global');
throw new Error();
}
}
async createOnboardingResourcesAndRedirect(hostAddress, targetPort) {
const { org, project, hostCatalog, hostSet, host, target, role } =
this.currentModel;
// The Procedure
await org.save();
project.scopeID = org.id;
await project.save();
hostCatalog.scopeID = project.id;
await hostCatalog.save();
hostSet.host_catalog_id = hostCatalog.id;
await hostSet.save();
host.host_catalog_id = hostCatalog.id;
if (hostAddress) {
host.address = hostAddress;
await host.save();
await hostSet.addHosts([host.id]);
target.scopeID = project.id;
target.default_port = targetPort;
await target.save();
await target.addHostSources([hostSet.id]);
role.scopeID = org.id;
role.grant_scope_id = project.id;
await role.save();
await role.saveGrantStrings([
`type=target;actions=list`,
`id=${target.id};actions=authorize-session`,
]);
this.router.transitionTo(
'onboarding.quick-setup.create-resources.success'
);
} else {
this.router.transitionTo(
'scopes.scope.host-catalogs.host-catalog.hosts',
project.id,
hostCatalog.id
);
}
}
}
@@ -1,38 +0,0 @@
import Route from '@ember/routing/route';
import { getOwner } from '@ember/application';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class OnboardingQuickSetupCreateResourcesSuccessRoute extends Route {
// =services
@service router;
// =attributes
/**
* Looks up the window object indirectly.
* @type {Window}
*/
get window() {
// The Ember way of accessing globals...
const document = getOwner(this).lookup('service:-document').documentElement;
// defaultView === window, but without using globals directly
return document.parentNode.defaultView;
}
// =methods
model() {
const model = this.modelFor('onboarding.quick-setup.create-resources');
return {
...model,
clusterUrl: this.window.location.origin,
};
}
@action
showTargetList(scope) {
const {
project: { id: scopeID },
target: { id: targetID },
} = scope;
this.router.transitionTo('scopes.scope.targets.target', scopeID, targetID);
}
}
+28
View File
@@ -0,0 +1,28 @@
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
export default class OnboardingSuccessRoute extends Route {
// =services
@service router;
@service session;
@service browserObject;
// =methods
model() {
const model = this.modelFor('onboarding');
return {
...model,
clusterUrl: this.browserObject.window.origin,
};
}
@action
showTargetList(scope) {
const {
project: { id: scopeID },
target: { id: targetID },
} = scope;
this.router.transitionTo('scopes.scope.targets.target', scopeID, targetID);
}
}
+1 -1
View File
@@ -27,7 +27,7 @@ export default class ScopesScopeIndexRoute extends Route {
// If authenticated but no orgs exist yet, redirect to onboarding
if (this.session.isAuthenticated && !hasOrgs) {
return this.router.transitionTo('onboarding.quick-setup.choose-path');
return this.router.transitionTo('onboarding');
}
// If this a project scope, there are no further sub scopes, so show edit
+74 -145
View File
@@ -238,161 +238,90 @@
}
}
// onboarding quick setup styles
.choose-path {
display: block;
width: sizing.rems(xl) * 15;
}
.choose-path-cards {
display: flex;
justify-content: space-between;
}
// Onboarding styles
.create-resources {
display: block;
display: flex;
align-items: flex-start;
width: sizing.rems(xl) * 15;
.rose-form-fieldset {
margin-top: sizing.rems(xl);
}
.rose-frame-body {
p {
color: var(--ui-gray);
}
}
}
.create-resource-cards {
display: flex;
justify-content: space-between;
.rose-form-input {
width: sizing.rems(xl) * 6;
}
}
.onboarding-quick-setup-success {
display: block;
width: min-content;
.rose-frame-header {
padding: sizing.rems(l);
}
h2 {
font-weight: 700;
line-height: 24px;
margin: 0;
}
h4 {
font-weight: 700;
line-height: 19px;
}
a {
font-size: 12px;
font-weight: 600;
line-height: 16px;
}
}
.onboarding-quick-setup-success-role {
span {
display: flex;
}
h3 {
font-size: 16px;
font-weight: 600;
letter-spacing: -0.5px;
line-height: 24px;
margin-left: sizing.rems(xs);
margin-top: 0;
}
.rose-icon {
color: var(--success);
}
}
.onboarding-quick-setup-success-sub-title {
display: inline-flex;
h3 {
font-weight: 600;
letter-spacing: -0.5px;
line-height: 24px;
margin-left: sizing.rems(xs);
margin-top: sizing.rems(xxs);
}
.rose-icon {
margin-bottom: sizing.rems(xs);
}
}
.onboarding-quick-setup-success-link {
display: block;
margin-top: sizing.rems(xs);
text-decoration: none;
}
.onboarding-quick-setup-success-image {
margin-bottom: sizing.rems(xl);
margin-top: sizing.rems(l);
}
.onboarding-quick-setup-success-button {
display: flex;
justify-content: center;
margin-bottom: 0;
margin-top: sizing.rems(xl);
width: 100%;
}
.onboarding-quick-setup-success-controller {
margin-top: sizing.rems(l);
h4 {
font-weight: 600;
line-height: 18px;
margin-bottom: sizing.rems(xxs);
}
p {
color: var(--ui-gray);
margin-bottom: sizing.rems(xxs);
}
}
.onboarding-quick-setup-success-controller-url {
border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
border-radius: sizing.rems(xxxs);
color: var(--action);
height: (sizing.rems(xs) * 5);
.copyable {
.create-resources-form {
display: flex;
justify-content: space-between;
padding: sizing.rems(s);
gap: sizing.rems(s);
}
.rose-icon {
margin: 0;
.hds-form-group {
margin-top: sizing.rems(l);
justify-content: center;
.image-container {
display: flex;
justify-content: center;
margin-top: sizing.rems(l);
}
}
.copyable-button {
top: -4px;
}
}
.create-resources-item {
margin-bottom: sizing.rems(xxl);
.onboarding-quick-setup-success-developers {
p {
margin-bottom: sizing.rems(s);
margin-top: sizing.rems(xs);
.create-resources-item-header {
display: flex;
align-items: center;
align-self: center;
gap: 8px;
margin-bottom: sizing.rems(s);
h3 {
margin: 0;
}
.hds-icon-tile {
color: var(--token-color-foreground-success);
}
}
.hds-link-standalone {
margin-bottom: sizing.rems(xs);
}
.create-resources-item-controller {
margin-top: sizing.rems(xl);
.create-resources-item-controller-label {
color: var(--ui-gray);
}
.create-resources-item-controller-copyable {
display: flex;
flex-direction: column;
flex-wrap: wrap;
justify-content: center;
border: sizing.rems(xxxxs) solid var(--ui-gray-subtler-2);
border-radius: sizing.rems(xxxs);
color: var(--action);
height: (sizing.rems(xs) * 5);
margin: sizing.rems(xxs) 0 sizing.rems(l) 0;
.copyable {
display: flex;
justify-content: space-between;
padding: sizing.rems(s);
span {
display: flex;
}
}
.copyable-button {
top: 0; // This is to override a negative top declared above
}
}
.image-container > svg {
width: 100%;
height: 100%;
}
}
}
}
@@ -0,0 +1,15 @@
<Rose::Layout::Centered class='create-resources'>
<Rose::Frame>
<:header>
<h2>{{t 'onboarding.add-target.titles.have-a-target'}}</h2>
</:header>
<:body>
<p>{{t 'onboarding.add-target.descriptions.setup-first-target'}}</p>
<Form::Onboarding
@model={{@model}}
@submit={{route-action 'createResources'}}
@cancel={{route-action 'doLater'}}
/>
</:body>
</Rose::Frame>
</Rose::Layout::Centered>
@@ -1,11 +0,0 @@
<Rose::Layout::Centered class='choose-path'>
<Rose::Frame>
<:header>
<h2>{{t 'onboarding.quick-start.titles.choose-path'}}</h2>
</:header>
<:body>
<p>{{t 'onboarding.quick-start.descriptions.choose-path'}}</p>
<Form::Onboarding::ChoosePath @submit={{route-action 'choosePath'}} />
</:body>
</Rose::Frame>
</Rose::Layout::Centered>
@@ -1,15 +0,0 @@
{{page-title (t 'titles.create-resources')}}
<Rose::Layout::Centered class='create-resources'>
<Rose::Frame>
<:header>
<h2>{{t 'onboarding.quick-start.titles.quick-setup'}}</h2>
</:header>
<:body>
<h3>{{t 'onboarding.quick-start.titles.create-resource'}}</h3>
<p>{{t 'onboarding.quick-start.descriptions.create-resource'}}</p>
<Form::Onboarding::CreateResources
@submit={{route-action 'createResources'}}
/>
</:body>
</Rose::Frame>
</Rose::Layout::Centered>
@@ -1,98 +0,0 @@
{{page-title (t 'titles.success')}}
<Rose::Layout::Centered class='onboarding-quick-setup-success'>
<Rose::Frame>
<:header>
<h2>{{t 'onboarding.success.titles.connect'}}</h2>
</:header>
<:body>
<div class='onboarding-quick-setup-success-role'>
<span>
<Rose::Icon @name='flight-icons/svg/check-circle-16' />
<h3>
{{t 'onboarding.success.titles.creation-success'}}
</h3>
</span>
<p>{{t 'onboarding.success.descriptions.role'}}</p>
</div>
<div class='onboarding-quick-setup-success-sub-title'>
<Rose::Icon @name='logo-app-background' @size='extra-large' />
<h3>
{{t 'onboarding.success.titles.desktop'}}
</h3>
</div>
<p>{{t 'onboarding.success.descriptions.download'}}</p>
<a
href={{doc-url 'downloads'}}
target='_blank'
class='onboarding-quick-setup-success-link'
rel='noopener noreferrer'
>
<Rose::Icon @name='flight-icons/svg/download-16' @size='medium' />
{{t 'onboarding.success.links.install'}}
</a>
<a
href={{doc-url 'getting-started.desktop'}}
target='_blank'
class='onboarding-quick-setup-success-link'
rel='noopener noreferrer'
>
<Rose::Icon @name='flight-icons/svg/docs-link-16' @size='medium' />
{{t 'onboarding.success.links.learn'}}
</a>
<div class='onboarding-quick-setup-success-controller'>
<h4>{{t 'onboarding.success.titles.controller'}}</h4>
<p>{{t 'onboarding.success.descriptions.controller'}}</p>
<div class='onboarding-quick-setup-success-controller-url'>
<Copyable
@text={{this.model.clusterUrl}}
@buttonText={{t 'actions.copy-to-clipboard'}}
@acknowledgeText={{t 'states.copied'}}
>
<code>{{this.model.clusterUrl}}</code>
</Copyable>
</div>
</div>
<div class='onboarding-quick-setup-success-image'>
<Image @name='targets' />
</div>
<div class='onboarding-quick-setup-success-developers'>
<h4>{{t 'onboarding.success.titles.developers'}}</h4>
<p>{{t 'onboarding.success.descriptions.developers'}}</p>
<a
href={{doc-url 'api-client.cli'}}
target='_blank'
class='onboarding-quick-setup-success-link'
rel='noopener noreferrer'
>
<Rose::Icon @name='flight-icons/svg/docs-link-16' @size='medium' />
{{t 'onboarding.success.links.cli'}}
</a>
<a
href={{doc-url 'api-client.api'}}
target='_blank'
class='onboarding-quick-setup-success-link'
rel='noopener noreferrer'
>
<Rose::Icon @name='flight-icons/svg/docs-link-16' @size='medium' />
{{t 'onboarding.success.links.api'}}
</a>
<Rose::Button
class='onboarding-quick-setup-success-button'
@style='primary'
{{on 'click' (route-action 'showTargetList' @model)}}
>
{{t 'actions.done'}}
</Rose::Button>
</div>
</:body>
</Rose::Frame>
</Rose::Layout::Centered>
@@ -0,0 +1,94 @@
{{page-title (t 'titles.success')}}
<Rose::Layout::Centered class='create-resources'>
<Rose::Frame>
<:header>
<h2>{{t 'onboarding.success.titles.connect'}}</h2>
</:header>
<:body>
{{! We have created }}
<div class='create-resources-item'>
<span class='create-resources-item-header'>
<FlightIcon
@name='check-circle'
@color='var(--token-color-foreground-success)'
@size='24'
/>
<h3>{{t 'onboarding.success.titles.creation-success'}}</h3>
</span>
<p>{{t 'onboarding.success.descriptions.role'}}</p>
</div>
{{! Download Desktop client }}
<div class='create-resources-item'>
<span class='create-resources-item-header'>
<FlightIcon @name='boundary-color' @size='24' />
<h3>{{t 'onboarding.success.titles.desktop'}}</h3>
</span>
<p>{{t 'onboarding.success.descriptions.download'}}</p>
<Hds::Link::Standalone
@icon='download'
@text={{t 'onboarding.success.links.install'}}
@href={{doc-url 'downloads'}}
isHrefExternal={{true}}
/>
<Hds::Link::Standalone
@icon='docs-link'
@text={{t 'onboarding.success.links.learn'}}
@href={{doc-url 'getting-started.desktop'}}
isHrefExternal={{true}}
/>
{{! Controller }}
<div class='create-resources-item-controller'>
<h4 class='hds-typography-display-200 hds-font-weight-semibold'>
{{t 'onboarding.success.titles.controller'}}
</h4>
<span class='create-resources-item-controller-label'>{{t
'onboarding.success.descriptions.controller'
}}</span>
<div class='create-resources-item-controller-copyable'>
<Copyable
@text={{this.model.clusterUrl}}
@buttonText={{t 'actions.copy-to-clipboard'}}
@acknowledgeText={{t 'states.copied'}}
>
<code>{{this.model.clusterUrl}}</code>
</Copyable>
</div>
<Image @name='targets' />
</div>
</div>
{{! Developers }}
<div class='create-resources-item'>
<h4 class='hds-typography-display-200 hds-font-weight-semibold'>
{{t 'onboarding.success.titles.developers'}}
</h4>
<p>{{t 'onboarding.success.descriptions.developers'}}</p>
<Hds::Link::Standalone
@icon='docs-link'
@text={{t 'onboarding.success.links.cli'}}
@href={{doc-url 'api-client.cli'}}
isHrefExternal={{true}}
/>
<Hds::Link::Standalone
@icon='docs-link'
@text={{t 'onboarding.success.links.api'}}
@href={{doc-url 'api-client.api'}}
isHrefExternal={{true}}
/>
</div>
<Hds::Button
@text={{t 'actions.done'}}
data-test-onboarding-done-button
{{on 'click' (route-action 'showTargetList' @model)}}
/>
</:body>
</Rose::Frame>
</Rose::Layout::Centered>
@@ -1,50 +0,0 @@
import { module, test } from 'qunit';
import { visit, currentURL, find, click } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { authenticateSession } from 'ember-simple-auth/test-support';
module('Acceptance | onboarding | choose-path', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
const urls = {
choosePath: '/onboarding/quick-setup/choose-path',
newOrg: '/scopes/global/scopes/new',
createResources: '/onboarding/quick-setup/create-resources',
};
hooks.beforeEach(function () {
authenticateSession({});
});
test('defaults to the guided path', async function (assert) {
assert.expect(2);
await visit(urls.choosePath);
assert.strictEqual(find('input[name=path]:checked').value, 'guided');
assert.false(find('input[value=manual]').checked);
});
test('updates to the manual path when manual card clicked', async function (assert) {
assert.expect(2);
await visit(urls.choosePath);
await click('[name="path"][value="manual"]');
assert.strictEqual(find('input[name=path]:checked').value, 'manual');
assert.false(find('input[value=guided]').checked);
});
test('guided path directs user to /create-resources route', async function (assert) {
assert.expect(1);
await visit(urls.choosePath);
await click('[type="submit"]');
assert.strictEqual(currentURL(), urls.createResources);
});
test('guided path directs user to /global/new route', async function (assert) {
assert.expect(1);
await visit(urls.choosePath);
await click('[name="path"][value="manual"]');
await click('[type="submit"]');
assert.strictEqual(currentURL(), urls.newOrg);
});
});
@@ -1,49 +0,0 @@
import { module, test } from 'qunit';
import { visit, currentURL, find, click, fillIn } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { authenticateSession } from 'ember-simple-auth/test-support';
module('Acceptance | onboarding | create-resources', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
const urls = {
createResources: '/onboarding/quick-setup/create-resources',
successPath: '/onboarding/quick-setup/create-resources/success',
hostCatalogPath: null,
};
hooks.beforeEach(function () {
authenticateSession({});
});
test('show hostAddress and targetPort fields when the checkbox is checked', async function (assert) {
assert.expect(2);
await visit(urls.createResources);
await click('[type="checkbox"]');
assert.ok(find('[name="hostAddress"]'));
assert.ok(find('[name="targetPort"]'));
});
test('redirects user to success screen when next is clicked', async function (assert) {
assert.expect(1);
await visit(urls.createResources);
await click('[type="checkbox"]');
await fillIn('[name="hostAddress"]', '0.0.0.0');
await fillIn('[name="targetPort"]', '22');
await click('[type="submit"]');
assert.strictEqual(currentURL(), urls.successPath);
});
test('redirects user to host catalog screen when next is clicked', async function (assert) {
assert.expect(1);
await visit(urls.createResources);
await click('[type="submit"]');
const projectId = this.server.schema.scopes.where({ type: 'project' })
.models[0].id;
const hostCatalogId = this.server.schema.hostCatalogs.all().models[0].id;
urls.hostCatalogPath = `/scopes/${projectId}/host-catalogs/${hostCatalogId}/hosts`;
assert.strictEqual(currentURL(), urls.hostCatalogPath);
});
});
@@ -0,0 +1,43 @@
import { module, test } from 'qunit';
import { setupApplicationTest } from 'ember-qunit';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { authenticateSession } from 'ember-simple-auth/test-support';
import { visit, fillIn, click, currentURL } from '@ember/test-helpers';
module('Acceptance | onboarding', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
const urls = {
onboarding: '/onboarding',
success: '/onboarding/success',
orgs: '/scopes/global/scopes',
};
hooks.beforeEach(() => {
authenticateSession({});
});
test('show targetAddress and targetPort fields', async function (assert) {
assert.expect(2);
await visit(urls.onboarding);
assert.dom('[name="targetAddress"]').isVisible();
assert.dom('[name="targetPort"]').isVisible();
});
test('redirect user to success when fill targetAddress, targetPort and click Save', async function (assert) {
assert.expect(1);
await visit(urls.onboarding);
await fillIn('[name="targetAddress"]', '192.168.1.0');
await fillIn('[name="targetPort"]', '22');
await click('[type="submit"]');
assert.strictEqual(currentURL(), urls.success);
});
test('redirect user to orgs screen when click do this later', async function (assert) {
assert.expect(1);
await visit(urls.onboarding);
await click('[name="cancel"]');
assert.strictEqual(currentURL(), urls.orgs);
});
});
@@ -4,51 +4,45 @@ import { setupApplicationTest } from 'ember-qunit';
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
import { authenticateSession } from 'ember-simple-auth/test-support';
module(
'Acceptance | onboarding | quick-setup | create-resources | success',
function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
module('Acceptance | onboarding | success', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
hooks.beforeEach(function () {
authenticateSession({});
});
hooks.beforeEach(function () {
authenticateSession({});
});
const urls = {
createResources: '/onboarding/quick-setup/create-resources',
successPath: '/onboarding/quick-setup/create-resources/success',
targetsPath: null,
};
const urls = {
onboarding: '/onboarding',
success: '/onboarding/success',
target: null,
};
const doneButtonSelector = '[data-test-onboarding-done-button]';
test('check if the done button is present', async function (assert) {
assert.expect(1);
await visit(urls.successPath);
assert.ok(find('.onboarding-quick-setup-success-button'));
});
test('check if the done button is present', async function (assert) {
assert.expect(1);
await visit(urls.success);
assert.dom(doneButtonSelector).isVisible();
});
test('check if the controller url is copyable', async function (assert) {
assert.expect(2);
await visit(urls.successPath);
assert.ok(find('.copyable'));
assert.strictEqual(
find('.copyable-button').textContent.trim(),
'Copy to Clipboard'
);
});
test('check the controller url is copyable', async function (assert) {
assert.expect(2);
const origin = window.location.origin;
await visit(urls.success);
assert.dom('.copyable-content').isVisible();
assert.strictEqual(find('.copyable-content').textContent.trim(), origin);
});
test('redirect user to targets details when done is clicked', async function (assert) {
assert.expect(1);
await visit(urls.createResources);
await click('[type="checkbox"]');
await fillIn('[name="hostAddress"]', '0.0.0.0');
await fillIn('[name="targetPort"]', '22');
await click('[type="submit"]');
const projectId = this.server.db.scopes.where({ type: 'project' })[0].id;
const targetId = this.server.db.targets[0].id;
await visit(urls.successPath);
await click('.onboarding-quick-setup-success-button');
urls.targetsPath = `/scopes/${projectId}/targets/${targetId}`;
assert.strictEqual(currentURL(), urls.targetsPath);
});
}
);
test('fill the onboarding form and redirect user to target detail when done is clicked', async function (assert) {
assert.expect(1);
await visit(urls.onboarding);
await fillIn('[name="targetAddress"]', '0.0.0.0');
await fillIn('[name="targetPort"]', '22');
await click('[type="submit"]');
await click(doneButtonSelector);
const projectId = this.server.db.scopes.where({ type: 'project' })[0].id;
const targetId = this.server.db.targets[0].id;
urls.target = `/scopes/${projectId}/targets/${targetId}`;
assert.strictEqual(currentURL(), urls.target);
});
});
@@ -1,11 +0,0 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module('Unit | Route | onboarding/quick-setup/choose-path', function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup('route:onboarding/quick-setup/choose-path');
assert.ok(route);
});
});
@@ -1,16 +0,0 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module(
'Unit | Route | onboarding/quick-setup/create-resources',
function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup(
'route:onboarding/quick-setup/create-resources'
);
assert.ok(route);
});
}
);
@@ -1,16 +0,0 @@
import { module, test } from 'qunit';
import { setupTest } from 'ember-qunit';
module(
'Unit | Route | onboarding/quick-setup/create-resources/success',
function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup(
'route:onboarding/quick-setup/create-resources/success'
);
assert.ok(route);
});
}
);
@@ -0,0 +1,11 @@
import { module, test } from 'qunit';
import { setupTest } from 'admin/tests/helpers';
module('Unit | Route | onboarding/success', function (hooks) {
setupTest(hooks);
test('it exists', function (assert) {
let route = this.owner.lookup('route:onboarding/success');
assert.ok(route);
});
});