michaelmcmillan/Stenograpi

View on GitHub
docs/img/flow.svg

Summary

Maintainability
Test Coverage
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="804px" height="280px" version="1.1" content="&lt;mxfile userAgent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36&quot; version=&quot;6.0.1.7&quot; editor=&quot;www.draw.io&quot; type=&quot;device&quot;&gt;&lt;diagram name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g transform="translate(0.5,0.5)"><path d="M 462 30 L 462 10 L 622 10 L 622 21.76" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 27.76 L 618 19.76 L 622 21.76 L 626 19.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 342 250 L 342 270 L 182 270 L 182 257.24" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 182 251.24 L 186 259.24 L 182 257.24 L 178 259.24 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 620 71.88 C 620 45.21 744 45.21 744 71.88 L 744 185.45 C 744 212.11 620 212.11 620 185.45 Z" fill="#ffffff" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 620 71.88 C 620 91.88 744 91.88 744 71.88 M 620 81.88 C 620 101.88 744 101.88 744 81.88 M 620 91.88 C 620 111.88 744 111.88 744 91.88" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(649.5,217.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="64" height="24" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 66px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Server</div></div></foreignObject><text x="32" y="23" fill="#000000" text-anchor="middle" font-size="22px" font-family="Helvetica">Server</text></switch></g><image x="322" y="50" width="160" height="160" xlink:href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMTAwIDEwMCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PHBhdGggZD0iTTEwLjQ2OCwzNC43NDh2LTEuNDEySDQuNTM2djEuNDEySDEwLjQ2OEwxMC40NjgsMzQuNzQ4eiBNOTAuOTU1LDM0Ljc0OGg1LjQ4NnYtMS40MTJoLTUuNDg2VjM0Ljc0OEw5MC45NTUsMzQuNzQ4eiAgICBNNzAuMDkxLDg3LjMwMXYxLjk1OWMwLDAuNzc5LDAuNjMyLDEuNDEyLDEuNDExLDEuNDEyaDEuOTZjMC43OCwwLDEuNDEzLTAuNjMzLDEuNDEzLTEuNDEydi0xLjk1OSAgIGMwLTAuNzgtMC42MzMtMS40MTItMS40MTMtMS40MTJoLTEuOTZDNzAuNzIzLDg1Ljg4OSw3MC4wOTEsODYuNTIxLDcwLjA5MSw4Ny4zMDFMNzAuMDkxLDg3LjMwMXogTTc2LjM0MSw4Ny4zMDF2MS45NTkgICBjMCwwLjc3OSwwLjYzMiwxLjQxMiwxLjQxMywxLjQxMmgxLjk1OGMwLjc3OCwwLDEuNDExLTAuNjMzLDEuNDExLTEuNDEydi0xLjk1OWMwLTAuNzgtMC42MzMtMS40MTItMS40MTEtMS40MTJoLTEuOTU4ICAgQzc2Ljk3Myw4NS44ODksNzYuMzQxLDg2LjUyMSw3Ni4zNDEsODcuMzAxTDc2LjM0MSw4Ny4zMDF6IE0yNi4zMTUsOTIuNTIydjEuNjE0YzAsMC4zODksMC4zMTYsMC43MDQsMC43MDYsMC43MDRoNDcuMTMgICBjMC4zOTEsMCwwLjcwNy0wLjMxNSwwLjcwNy0wLjcwNHYtMS42MTRjMC0wLjM5Mi0wLjMxNi0wLjcwNi0wLjcwNy0wLjcwNmgtNDcuMTNDMjYuNjMxLDkxLjgxNiwyNi4zMTUsOTIuMTMxLDI2LjMxNSw5Mi41MjIgICBMMjYuMzE1LDkyLjUyMnogTTE2Ljk3OSw4MS40OTd2MS45NThjMCwwLjc4MSwwLjYzMywxLjQxNCwxLjQxMywxLjQxNGgxLjk1OGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTR2LTEuOTU4ICAgYzAtMC43OC0wLjYzMi0xLjQxMy0xLjQxMy0xLjQxM2gtMS45NThDMTcuNjExLDgwLjA4NCwxNi45NzksODAuNzE3LDE2Ljk3OSw4MS40OTdMMTYuOTc5LDgxLjQ5N3ogTTIzLjIyOSw4MS40OTd2MS45NTggICBjMCwwLjc4MSwwLjYzMiwxLjQxNCwxLjQxMiwxLjQxNGgxLjk1OGMwLjc4MSwwLDEuNDE0LTAuNjMzLDEuNDE0LTEuNDE0di0xLjk1OGMwLTAuNzgtMC42MzMtMS40MTMtMS40MTQtMS40MTNoLTEuOTU4ICAgQzIzLjg2MSw4MC4wODQsMjMuMjI5LDgwLjcxNywyMy4yMjksODEuNDk3TDIzLjIyOSw4MS40OTd6IE0yOS40NzksODEuNDk3djEuOTU4YzAsMC43ODEsMC42MzIsMS40MTQsMS40MTIsMS40MTRoMS45NTggICBjMC43ODEsMCwxLjQxNC0wLjYzMywxLjQxNC0xLjQxNHYtMS45NThjMC0wLjc4LTAuNjMzLTEuNDEzLTEuNDE0LTEuNDEzaC0xLjk1OEMzMC4xMTEsODAuMDg0LDI5LjQ3OSw4MC43MTcsMjkuNDc5LDgxLjQ5NyAgIEwyOS40NzksODEuNDk3eiBNMzUuNzI5LDgxLjQ5N3YxLjk1OGMwLDAuNzgxLDAuNjMzLDEuNDE0LDEuNDEzLDEuNDE0aDEuOTU4YzAuNzgsMCwxLjQxMy0wLjYzMywxLjQxMy0xLjQxNHYtMS45NTggICBjMC0wLjc4LTAuNjMzLTEuNDEzLTEuNDEzLTEuNDEzaC0xLjk1OEMzNi4zNjIsODAuMDg0LDM1LjcyOSw4MC43MTcsMzUuNzI5LDgxLjQ5N0wzNS43MjksODEuNDk3eiBNNDEuOTc5LDgxLjQ5N3YxLjk1OCAgIGMwLDAuNzgxLDAuNjMyLDEuNDE0LDEuNDEzLDEuNDE0aDEuOTU4YzAuNzgxLDAsMS40MTMtMC42MzMsMS40MTMtMS40MTR2LTEuOTU4YzAtMC43OC0wLjYzMi0xLjQxMy0xLjQxMy0xLjQxM2gtMS45NTggICBDNDIuNjEyLDgwLjA4NCw0MS45NzksODAuNzE3LDQxLjk3OSw4MS40OTdMNDEuOTc5LDgxLjQ5N3ogTTQ4LjIzLDgxLjQ5N3YxLjk1OGMwLDAuNzgxLDAuNjMyLDEuNDE0LDEuNDEzLDEuNDE0aDEuOTU4ICAgYzAuNzgsMCwxLjQxMy0wLjYzMywxLjQxMy0xLjQxNHYtMS45NThjMC0wLjc4LTAuNjMzLTEuNDEzLTEuNDEzLTEuNDEzaC0xLjk1OEM0OC44NjIsODAuMDg0LDQ4LjIzLDgwLjcxNyw0OC4yMyw4MS40OTcgICBMNDguMjMsODEuNDk3eiBNNTQuNDc5LDgxLjQ5N3YxLjk1OGMwLDAuNzgxLDAuNjMzLDEuNDE0LDEuNDE0LDEuNDE0aDEuOTU5YzAuNzc5LDAsMS40MTItMC42MzMsMS40MTItMS40MTR2LTEuOTU4ICAgYzAtMC43OC0wLjYzMy0xLjQxMy0xLjQxMi0xLjQxM2gtMS45NTlDNTUuMTExLDgwLjA4NCw1NC40NzksODAuNzE3LDU0LjQ3OSw4MS40OTdMNTQuNDc5LDgxLjQ5N3ogTTYwLjczLDgxLjQ5N3YxLjk1OCAgIGMwLDAuNzgxLDAuNjM0LDEuNDE0LDEuNDEzLDEuNDE0aDEuOTU4YzAuNzc5LDAsMS40MTEtMC42MzMsMS40MTEtMS40MTR2LTEuOTU4YzAtMC43OC0wLjYzMi0xLjQxMy0xLjQxMS0xLjQxM2gtMS45NTggICBDNjEuMzY0LDgwLjA4NCw2MC43Myw4MC43MTcsNjAuNzMsODEuNDk3TDYwLjczLDgxLjQ5N3ogTTY2Ljk3OSw4MS40OTd2MS45NThjMCwwLjc4MSwwLjYzMiwxLjQxNCwxLjQxMywxLjQxNGgxLjk1OCAgIGMwLjc4MSwwLDEuNDEzLTAuNjMzLDEuNDEzLTEuNDE0di0xLjk1OGMwLTAuNzgtMC42MzItMS40MTMtMS40MTMtMS40MTNoLTEuOTU4QzY3LjYxMSw4MC4wODQsNjYuOTc5LDgwLjcxNyw2Ni45NzksODEuNDk3ICAgTDY2Ljk3OSw4MS40OTd6IE03My4yMyw4MS40OTd2MS45NThjMCwwLjc4MSwwLjYzMiwxLjQxNCwxLjQxNCwxLjQxNGgxLjk1N2MwLjc3OSwwLDEuNDEyLTAuNjMzLDEuNDEyLTEuNDE0di0xLjk1OCAgIGMwLTAuNzgtMC42MzMtMS40MTMtMS40MTItMS40MTNoLTEuOTU3QzczLjg2Miw4MC4wODQsNzMuMjMsODAuNzE3LDczLjIzLDgxLjQ5N0w3My4yMyw4MS40OTd6IE03OS40OCw4MS40OTd2MS45NTggICBjMCwwLjc4MSwwLjYzMywxLjQxNCwxLjQxMiwxLjQxNGgxLjk1OGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTR2LTEuOTU4YzAtMC43OC0wLjYzMy0xLjQxMy0xLjQxMy0xLjQxM2gtMS45NTggICBDODAuMTEzLDgwLjA4NCw3OS40OCw4MC43MTcsNzkuNDgsODEuNDk3TDc5LjQ4LDgxLjQ5N3ogTTIwLjA4OSw4Ny4zMDF2MS45NTljMCwwLjc3OSwwLjYzMywxLjQxMiwxLjQxMywxLjQxMmgxLjk1OCAgIGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTJ2LTEuOTU5YzAtMC43OC0wLjYzMy0xLjQxMi0xLjQxMy0xLjQxMmgtMS45NThDMjAuNzIyLDg1Ljg4OSwyMC4wODksODYuNTIxLDIwLjA4OSw4Ny4zMDEgICBMMjAuMDg5LDg3LjMwMXogTTEzLjg0LDc1LjY5MnYxLjk1OWMwLDAuNzgsMC42MzIsMS40MTMsMS40MTMsMS40MTNoMS45NThjMC43ODEsMCwxLjQxMy0wLjYzMywxLjQxMy0xLjQxM3YtMS45NTkgICBjMC0wLjc3OC0wLjYzMi0xLjQxMi0xLjQxMy0xLjQxMmgtMS45NThDMTQuNDcyLDc0LjI4LDEzLjg0LDc0LjkxNCwxMy44NCw3NS42OTJMMTMuODQsNzUuNjkyeiBNMjAuMDksNzUuNjkydjEuOTU5ICAgYzAsMC43OCwwLjYzMiwxLjQxMywxLjQxMywxLjQxM2gxLjk1OGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTN2LTEuOTU5YzAtMC43NzgtMC42MzItMS40MTItMS40MTMtMS40MTJoLTEuOTU4ICAgQzIwLjcyMiw3NC4yOCwyMC4wOSw3NC45MTQsMjAuMDksNzUuNjkyTDIwLjA5LDc1LjY5MnogTTI2LjM0LDc1LjY5MnYxLjk1OWMwLDAuNzgsMC42MzIsMS40MTMsMS40MTIsMS40MTNoMS45NTggICBjMC43OCwwLDEuNDEzLTAuNjMzLDEuNDEzLTEuNDEzdi0xLjk1OWMwLTAuNzc4LTAuNjMzLTEuNDEyLTEuNDEzLTEuNDEyaC0xLjk1OEMyNi45NzIsNzQuMjgsMjYuMzQsNzQuOTE0LDI2LjM0LDc1LjY5MiAgIEwyNi4zNCw3NS42OTJ6IE0zMi41ODksNzUuNjkydjEuOTU5YzAsMC43OCwwLjYzMywxLjQxMywxLjQxNCwxLjQxM2gxLjk1OGMwLjc4LDAsMS40MTItMC42MzMsMS40MTItMS40MTN2LTEuOTU5ICAgYzAtMC43NzgtMC42MzItMS40MTItMS40MTItMS40MTJoLTEuOTU4QzMzLjIyMiw3NC4yOCwzMi41ODksNzQuOTE0LDMyLjU4OSw3NS42OTJMMzIuNTg5LDc1LjY5MnogTTM4Ljg0LDc1LjY5MnYxLjk1OSAgIGMwLDAuNzgsMC42MzMsMS40MTMsMS40MTMsMS40MTNoMS45NThjMC43OCwwLDEuNDEyLTAuNjMzLDEuNDEyLTEuNDEzdi0xLjk1OWMwLTAuNzc4LTAuNjMyLTEuNDEyLTEuNDEyLTEuNDEyaC0xLjk1OCAgIEMzOS40NzMsNzQuMjgsMzguODQsNzQuOTE0LDM4Ljg0LDc1LjY5MkwzOC44NCw3NS42OTJ6IE00NS4wOTEsNzUuNjkydjEuOTU5YzAsMC43OCwwLjYzMSwxLjQxMywxLjQxMiwxLjQxM2gxLjk1OCAgIGMwLjc4MSwwLDEuNDEzLTAuNjMzLDEuNDEzLTEuNDEzdi0xLjk1OWMwLTAuNzc4LTAuNjMyLTEuNDEyLTEuNDEzLTEuNDEyaC0xLjk1OEM0NS43MjIsNzQuMjgsNDUuMDkxLDc0LjkxNCw0NS4wOTEsNzUuNjkyICAgTDQ1LjA5MSw3NS42OTJ6IE01MS4zNCw3NS42OTJ2MS45NTljMCwwLjc4LDAuNjM0LDEuNDEzLDEuNDEyLDEuNDEzaDEuOTU5YzAuNzgxLDAsMS40MTMtMC42MzMsMS40MTMtMS40MTN2LTEuOTU5ICAgYzAtMC43NzgtMC42MzItMS40MTItMS40MTMtMS40MTJoLTEuOTU5QzUxLjk3NCw3NC4yOCw1MS4zNCw3NC45MTQsNTEuMzQsNzUuNjkyTDUxLjM0LDc1LjY5MnogTTU3LjU5LDc1LjY5MnYxLjk1OSAgIGMwLDAuNzgsMC42MzMsMS40MTMsMS40MTQsMS40MTNoMS45NTdjMC43OCwwLDEuNDE0LTAuNjMzLDEuNDE0LTEuNDEzdi0xLjk1OWMwLTAuNzc4LTAuNjM0LTEuNDEyLTEuNDE0LTEuNDEyaC0xLjk1NyAgIEM1OC4yMjMsNzQuMjgsNTcuNTksNzQuOTE0LDU3LjU5LDc1LjY5Mkw1Ny41OSw3NS42OTJ6IE02My44NDIsNzUuNjkydjEuOTU5YzAsMC43OCwwLjYzMywxLjQxMywxLjQxMSwxLjQxM2gxLjk1OCAgIGMwLjc4MSwwLDEuNDE0LTAuNjMzLDEuNDE0LTEuNDEzdi0xLjk1OWMwLTAuNzc4LTAuNjMzLTEuNDEyLTEuNDE0LTEuNDEyaC0xLjk1OEM2NC40NzUsNzQuMjgsNjMuODQyLDc0LjkxNCw2My44NDIsNzUuNjkyICAgTDYzLjg0Miw3NS42OTJ6IE03MC4wOTEsNzUuNjkydjEuOTU5YzAsMC43OCwwLjYzMiwxLjQxMywxLjQxMywxLjQxM2gxLjk1OGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTN2LTEuOTU5ICAgYzAtMC43NzgtMC42MzMtMS40MTItMS40MTMtMS40MTJoLTEuOTU4QzcwLjcyMyw3NC4yOCw3MC4wOTEsNzQuOTE0LDcwLjA5MSw3NS42OTJMNzAuMDkxLDc1LjY5MnogTTc2LjM0MSw3NS42OTJ2MS45NTkgICBjMCwwLjc4LDAuNjM0LDEuNDEzLDEuNDEzLDEuNDEzaDEuOTU4YzAuNzc5LDAsMS40MTEtMC42MzMsMS40MTEtMS40MTN2LTEuOTU5YzAtMC43NzgtMC42MzItMS40MTItMS40MTEtMS40MTJoLTEuOTU4ICAgQzc2Ljk3NSw3NC4yOCw3Ni4zNDEsNzQuOTE0LDc2LjM0MSw3NS42OTJMNzYuMzQxLDc1LjY5MnogTTgyLjU5LDc1LjY5MnYxLjk1OWMwLDAuNzgsMC42MzQsMS40MTMsMS40MTQsMS40MTNoMS45NTkgICBjMC43NzksMCwxLjQxMi0wLjYzMywxLjQxMi0xLjQxM3YtMS45NTljMC0wLjc3OC0wLjYzMy0xLjQxMi0xLjQxMi0xLjQxMmgtMS45NTlDODMuMjI0LDc0LjI4LDgyLjU5LDc0LjkxNCw4Mi41OSw3NS42OTIgICBMODIuNTksNzUuNjkyeiBNMjYuMzM5LDg3LjMwMXYxLjk1OWMwLDAuNzc5LDAuNjMyLDEuNDEyLDEuNDEzLDEuNDEyaDEuOTU4YzAuNzgxLDAsMS40MTMtMC42MzMsMS40MTMtMS40MTJ2LTEuOTU5ICAgYzAtMC43OC0wLjYzMi0xLjQxMi0xLjQxMy0xLjQxMmgtMS45NThDMjYuOTcyLDg1Ljg4OSwyNi4zMzksODYuNTIxLDI2LjMzOSw4Ny4zMDFMMjYuMzM5LDg3LjMwMXogTTMyLjU4OSw4Ny4zMDF2MS45NTkgICBjMCwwLjc3OSwwLjYzMywxLjQxMiwxLjQxNCwxLjQxMmgxLjk1OGMwLjc4LDAsMS40MTItMC42MzMsMS40MTItMS40MTJ2LTEuOTU5YzAtMC43OC0wLjYzMi0xLjQxMi0xLjQxMi0xLjQxMmgtMS45NTggICBDMzMuMjIyLDg1Ljg4OSwzMi41ODksODYuNTIxLDMyLjU4OSw4Ny4zMDFMMzIuNTg5LDg3LjMwMXogTTM4LjgzOSw4Ny4zMDF2MS45NTljMCwwLjc3OSwwLjYzMywxLjQxMiwxLjQxNCwxLjQxMmgxLjk1OCAgIGMwLjc4LDAsMS40MTMtMC42MzMsMS40MTMtMS40MTJ2LTEuOTU5YzAtMC43OC0wLjYzMi0xLjQxMi0xLjQxMy0xLjQxMmgtMS45NThDMzkuNDcyLDg1Ljg4OSwzOC44MzksODYuNTIxLDM4LjgzOSw4Ny4zMDEgICBMMzguODM5LDg3LjMwMXogTTQ1LjA5LDg3LjMwMXYxLjk1OWMwLDAuNzc5LDAuNjMyLDEuNDEyLDEuNDEzLDEuNDEyaDEuOTU4YzAuNzgxLDAsMS40MTItMC42MzMsMS40MTItMS40MTJ2LTEuOTU5ICAgYzAtMC43OC0wLjYzMS0xLjQxMi0xLjQxMi0xLjQxMmgtMS45NThDNDUuNzIyLDg1Ljg4OSw0NS4wOSw4Ni41MjEsNDUuMDksODcuMzAxTDQ1LjA5LDg3LjMwMXogTTUxLjM0LDg3LjMwMXYxLjk1OSAgIGMwLDAuNzc5LDAuNjM0LDEuNDEyLDEuNDEyLDEuNDEyaDEuOTU5YzAuNzgxLDAsMS40MTItMC42MzMsMS40MTItMS40MTJ2LTEuOTU5YzAtMC43OC0wLjYzMS0xLjQxMi0xLjQxMi0xLjQxMmgtMS45NTkgICBDNTEuOTc0LDg1Ljg4OSw1MS4zNCw4Ni41MjEsNTEuMzQsODcuMzAxTDUxLjM0LDg3LjMwMXogTTU3LjU5LDg3LjMwMXYxLjk1OWMwLDAuNzc5LDAuNjMzLDEuNDEyLDEuNDE0LDEuNDEyaDEuOTU2ICAgYzAuNzgxLDAsMS40MTUtMC42MzMsMS40MTUtMS40MTJ2LTEuOTU5YzAtMC43OC0wLjYzNC0xLjQxMi0xLjQxNS0xLjQxMmgtMS45NTZDNTguMjIzLDg1Ljg4OSw1Ny41OSw4Ni41MjEsNTcuNTksODcuMzAxICAgTDU3LjU5LDg3LjMwMXogTTYzLjg0LDg3LjMwMXYxLjk1OWMwLDAuNzc5LDAuNjM1LDEuNDEyLDEuNDEzLDEuNDEyaDEuOTU4YzAuNzgxLDAsMS40MTItMC42MzMsMS40MTItMS40MTJ2LTEuOTU5ICAgYzAtMC43OC0wLjYzMS0xLjQxMi0xLjQxMi0xLjQxMmgtMS45NThDNjQuNDc1LDg1Ljg4OSw2My44NCw4Ni41MjEsNjMuODQsODcuMzAxTDYzLjg0LDg3LjMwMXogTTIwLjQyNCwzOS4yNTZ2NS41MzFsMjEuNzk1LTAuMDUyICAgdjEuOTkxYy0wLjA2NywzLjA3OC0yLjU3Niw1LjU1OS01LjY0Nyw1LjU5OGwtMi42NSwwLjAwNGMtMi42NDQsMC00Ljc4NywxLjk4LTQuNzg3LDQuNDIzYzAsMi40NDQsMi4xNDMsNC40MjUsNC43ODcsNC40MjVoMzMuNDI5ICAgYzIuNjQ2LDAsNC43OS0xLjk4LDQuNzktNC40MjVjMC0yLjQ0Mi0yLjE0NS00LjQyMy00Ljc5LTQuNDIzbC0yLjU0Mi0wLjAwNGMtMy4wNy0wLjAzOS01LjU3OS0yLjUyLTUuNjQ2LTUuNTk4di0yLjAzMiAgIGwyMS42NjMtMC4wNTF2LTUuMzg3aC01LjAwMnYwLjcwOEg3MC41MnYtMC43MDhIMzAuNjczdjAuNzA4aC01LjMwNXYtMC43MDhIMjAuNDI0TDIwLjQyNCwzOS4yNTZ6IE04MC44MjYsMS45MDRIMjAuNDI0djM1LjkzOSAgIGg0Ljk0NHYtMC43MDZoNS4zMDV2MC43MDZINzAuNTJ2LTAuNzA2aDUuMzA1djAuNzA2aDUuMDAyVjEuOTA0TDgwLjgyNiwxLjkwNHogTTkwLjk1OCw5MC40MDZjMCw0LjY4LTMuNzk2LDguNDc1LTguNDc2LDguNDc1ICAgSDE4Ljk0NmMtNC42ODMsMC04LjQ3OC0zLjc5NS04LjQ3OC04LjQ3NVY0MC41NjNINC43ODdjLTAuNzc5LDAtMS40MTItMC42MzQtMS40MTItMS40MTN2LTYuMTEyYzAtMC43NzksMC42MzItMS40MTMsMS40MTItMS40MTMgICBoNS42ODF2LTUuNTk5bDguNTQyLTAuMDJWMC40OTJoNjMuMjI5djI1LjM2MWw4LjcxNi0wLjAyMXY1Ljc5Mmg1LjQ3OWMwLjc4MywwLDEuNDE2LDAuNjM0LDEuNDE2LDEuNDEzdjYuMTEyICAgYzAsMC43NzktMC42MzMsMS40MTMtMS40MTYsMS40MTNoLTUuNDc5TDkwLjk1OCw5MC40MDZMOTAuOTU4LDkwLjQwNnoiLz48L2c+PC9zdmc+" preserveAspectRatio="none" pointer-events="none"/><g transform="translate(348.5,217.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="107" height="24" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 107px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Stenograpi</div></div></foreignObject><text x="54" y="23" fill="#000000" text-anchor="middle" font-size="22px" font-family="Helvetica">Stenograpi</text></switch></g><rect x="2" y="49" width="200" height="70" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="none"/><g transform="translate(2.5,49.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="197" height="67" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; height: 68px; overflow: hidden; width: 198px; white-space: normal; word-wrap: normal; text-align: center;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>As a user I want to log in</b></p><hr /><p></p></div></foreignObject><text x="99" y="40" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="12" y="80" width="200" height="67" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="none"/><g transform="translate(12.5,80.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="197" height="64" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; height: 65px; overflow: hidden; width: 198px; white-space: normal; word-wrap: normal; text-align: center;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>As a user I want to log out</b></p><hr /><p></p></div></foreignObject><text x="99" y="38" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="22" y="111" width="200" height="90" fill="#ffffff" stroke="#000000" stroke-width="2" pointer-events="none"/><g transform="translate(22.5,111.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="197" height="87" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; height: 88px; overflow: hidden; width: 198px; white-space: normal; word-wrap: normal; text-align: center;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>As a user I want to change password</b></p><hr /><p></p></div></foreignObject><text x="99" y="50" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><g transform="translate(33.5,139.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="185" height="67" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 186px; white-space: nowrap; word-wrap: normal;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="text-align: left ; line-height: 120%"><pre><pre><font style="font-size: 11px"><span>req</span>('http://localhost:8080')<br />  .<span>post</span>(<span><span>'</span>/user<span>'</span></span>)<br />  .assert(status == 200)</font></pre></pre></div></div></div></foreignObject><text x="93" y="40" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><g transform="translate(95.5,216.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="52" height="24" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 52px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Tests</div></div></foreignObject><text x="26" y="23" fill="#000000" text-anchor="middle" font-size="22px" font-family="Helvetica">Tests</text></switch></g><path d="M 182 29 L 182 9 L 342 9 L 342 21.76" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 342 27.76 L 338 19.76 L 342 21.76 L 346 19.76 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 622 250 L 622 270 L 462 270 L 462 258.24" fill="none" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/><path d="M 462 252.24 L 466 260.24 L 462 258.24 L 458 260.24 Z" fill="#000000" stroke="#000000" stroke-width="2" stroke-miterlimit="10" pointer-events="none"/></g></svg>