diff options
author | Determinant <[email protected]> | 2016-05-01 17:41:32 +0800 |
---|---|---|
committer | Determinant <[email protected]> | 2016-05-01 17:41:32 +0800 |
commit | 59204b18b5b5ec4642ae4a3c7652b055f10eb001 (patch) | |
tree | 5a26767bdf044d4aeacdb2e631097e78dfe0f341 | |
parent | 34fe366898bc48b4e1ad6fa945dad8821857a459 (diff) |
add abstraction section in overview
-rw-r--r-- | nerv/doc/source/_static/nerv-dataflow.svg | 468 | ||||
-rw-r--r-- | nerv/doc/source/_static/nerv-hierarchy.svg | 407 | ||||
-rw-r--r-- | nerv/doc/source/overview.rst | 206 |
3 files changed, 1064 insertions, 17 deletions
diff --git a/nerv/doc/source/_static/nerv-dataflow.svg b/nerv/doc/source/_static/nerv-dataflow.svg new file mode 100644 index 0000000..1c7ae6c --- /dev/null +++ b/nerv/doc/source/_static/nerv-dataflow.svg @@ -0,0 +1,468 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="822" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="490" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto"> + <!--Generated by ySVG 2.5--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M0 0 L822 0 L822 490 L0 490 L0 0 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M1280 -2464 L3699.9167 -2464 L3699.9167 -1021.4705 L1280 -1021.4705 L1280 -2464 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M-1006.9763 -19.5717 L331.0339 -19.5717 L331.0339 778.0256 L-1006.9763 778.0256 L-1006.9763 -19.5717 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M-13.6165 -3.8893 L546.0029 -3.8893 L546.0029 329.7038 L-13.6165 329.7038 L-13.6165 -3.8893 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M-13.6165 -108.1353 L546.0029 -108.1353 L546.0029 225.4578 L-13.6165 225.4578 L-13.6165 -108.1353 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M-21.6583 -21.3458 L567.7791 -21.3458 L567.7791 330.022 L-21.6583 330.022 L-21.6583 -21.3458 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M-148.9282 -209.865 L2270.9885 -209.865 L2270.9885 1232.6644 L-148.9282 1232.6644 L-148.9282 -209.865 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M-393.9188 -209.865 L2025.998 -209.865 L2025.998 1232.6644 L-393.9188 1232.6644 L-393.9188 -209.865 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M-638.9094 -219.9573 L1781.0074 -219.9573 L1781.0074 1222.5723 L-638.9094 1222.5723 L-638.9094 -219.9573 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M-647.999 -287.7137 L1771.9178 -287.7137 L1771.9178 1154.8158 L-647.999 1154.8158 L-647.999 -287.7137 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M-148.9282 -323.6947 L2270.9885 -323.6947 L2270.9885 1118.8348 L-148.9282 1118.8348 L-148.9282 -323.6947 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M-393.9188 -323.6947 L2025.998 -323.6947 L2025.998 1118.8348 L-393.9188 1118.8348 L-393.9188 -323.6947 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M-909.0414 -219.9573 L1510.8754 -219.9573 L1510.8754 1222.5723 L-909.0414 1222.5723 L-909.0414 -219.9573 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M-897.7053 -606.6604 L1522.2115 -606.6604 L1522.2115 835.8691 L-897.7053 835.8691 L-897.7053 -606.6604 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M-106.5682 -501.6688 L2067.1113 -501.6688 L2067.1113 794.077 L-106.5682 794.077 L-106.5682 -501.6688 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M-389.5156 -501.6688 L1784.1641 -501.6688 L1784.1641 794.077 L-389.5156 794.077 L-389.5156 -501.6688 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M-106.5682 -623.9453 L2067.1113 -623.9453 L2067.1113 671.8004 L-106.5682 671.8004 L-106.5682 -623.9453 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M-389.5156 -623.9453 L1784.1641 -623.9453 L1784.1641 671.8004 L-389.5156 671.8004 L-389.5156 -623.9453 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M-1414.0779 -882.8395 L1005.8389 -882.8395 L1005.8389 559.69 L-1414.0779 559.69 L-1414.0779 -882.8395 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M-1456.5002 -954.5789 L963.4165 -954.5789 L963.4165 487.9506 L-1456.5002 487.9506 L-1456.5002 -954.5789 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M-1504.96 -1020.3965 L914.9568 -1020.3965 L914.9568 422.133 L-1504.96 422.133 L-1504.96 -1020.3965 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M-1741.0543 -1022.9883 L678.8624 -1022.9883 L678.8624 419.5412 L-1741.0543 419.5412 L-1741.0543 -1022.9883 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M-1957.7085 -1022.9883 L462.2083 -1022.9883 L462.2083 419.5412 L-1957.7085 419.5412 L-1957.7085 -1022.9883 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M-2174.3625 -1022.9883 L245.5542 -1022.9883 L245.5542 419.5412 L-2174.3625 419.5412 L-2174.3625 -1022.9883 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M-1414.0779 -1225.3135 L1005.8389 -1225.3135 L1005.8389 217.2161 L-1414.0779 217.2161 L-1414.0779 -1225.3135 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M-690.4218 -347.1358 L277.545 -347.1358 L277.545 229.876 L-690.4218 229.876 L-690.4218 -347.1358 Z"/> + </clipPath> + </defs> + <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="scale(0.3397,0.3397) translate(-1280,2464)" stroke="white"> + <rect x="1280" width="2420" height="1443" y="-2464" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.6143,0,0,0.6143,618.631,12.0238)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath3)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAD8CAYAAAC2EFsiAAAEXUlEQVR42u3ZW08T URiG0U5bKbQUkUYsUNSIeEDFeCqieOIgov////hN8jXx1mm9cLPeZF12mjSZJ3tD q2VmZmZmZmZmZmZmZmblrkrt1AGuhdk7P2vAQmJSP/hGWAq9sAwUr5fq976bHagW EZP6of0wDOvhFlC8+l2/me99P8PSOCqzmNQPWQ2jMA6TcBco3m7Yyfd+IwyyB+2m QelmmTYyJA/DQTgEivc8PM33fidPLSt50PjrtbNGwyzUfngZjsLHcAIU7Ti8y7js hc28rXSbBqWXd6hJnkym4Us4DxdA0U7Dp4xKfVLZDmv5D5rGQVnP+9SL8CFjchV+ AkW7zKgc5/VnkgeMhQTlMK86F/llv4Ci/QhneZAQFEBQAEEBBEVQAEEBBAUQFEEB QREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQF EBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAEBRAU QFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAU QQEEBRAUQFAEBRAUQFAAQfFjg6AICiAogKAAgiIogKAAggIICiAoggIICiAogKAI CgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggII CiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAog KICgCAoIiqAAggIICiAoggIICiAogKD4sUFQBAUQFEBQAEERFEBQAEEBBAUQFEEB BAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUAQF BEVQAEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQF EBRBAQQFEBRAUAQFBEVQAEEBBAUQFEEBBAUQFEBQ/OAgKIICCAogKICgCAoIiqAA ggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIIC CAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggK8B8H5Txc ZVSAcl2G038RlN184Pv8gu/5ZUC56sPD13AUDsLOvEFZCmthOzwJb8JJfsk3oGif 83TyOjwKW2E4T1DqD66GzfAgPMuHT7NaU6A4s3f7bXiVp5P74XYYhG6ToFT5wZW8 9mzlQ/fD4zyxAOWqTyV74V4Y53VnOXRaDTc7pfTzYaM8rYyB4t3J932Uf/pYyR5U TYNS/RGVXoZlkNcgoHyDDEkvbyzt1pyrUid1gWulkyGp5jmdmJmZmZmZmZmZmdmC 9xvkgbcsyx38hwAAAABJRU5ErkJggg==" height="252" preserveAspectRatio="none"/> + <path fill="rgb(63,99,63)" d="M3117.2969 -2412.5168 L3580.2144 -2412.5168 L3580.2144 -1991.7344 L3117.2969 -1991.7344 Z" clip-path="url(#clipPath2)" transform="matrix(0.5529,0,0,0.5529,-1714.7084,1342.8127)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3117.2969 -2412.5168 L3580.2144 -2412.5168 L3580.2144 -1991.7344 L3117.2969 -1991.7344 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3289.7546" xml:space="preserve" y="-2333.7283" clip-path="url(#clipPath2)" stroke="none">Network</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4689,0,0,1.4689,20.0007,5.7128)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath4)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAB1CAYAAACPrx4yAAAC9ElEQVR42u3ZW0tU URjHYefkYdQZLfNYmUWaoZRamSmFKZr1/b9P74JXGLyK2XMRy+cPD3S1B4T9Y63d 1JSZmZmZmZmZmZmZmZnVvVZqA49Ga8TEQlIe3And0AvTwKPQy/e+M4mo3MekPHQ2 9MNCGADVW8z3fS7j0jgq7axTeeAwrIS1sAlUbyOshicZlpmMytink04+pMRkPWyH 3bAf3gPVKu/4XngTnoenYT5vK61xg9LNa045mbzKHzoJp+EMqFZ5xz+HD3mI2MyD xXSToPTyqLOWDz0OF+EyXAHVKu/49wzLYd5OlvPG0igoi1mn/Xx4+aHbcAdUq7zj 13mAOAo7ee2ZzW+rjYNSrjtfs17lB/8A1fodbvKUcpzfUgQFGMvdg6C8HglKS1AA QQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzRQVAEBRAUQFAAQREU EBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAU QFAEBRAUQFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQ AEERFBAUQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQFEBRAUAQFBEVQAEEBBMUfHQRF UABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAU QQFBERRAUABBAQTl34KyEfbDl3AZbsMvoFrlHb8OF+Eo7EwqKAthPeyGk/yBn/lj V0B1rvMd/5G3ksOwHZabBqUb+uFZFuogfApn4Tx8A6pznu/4afgY9sJWGIaZJkHp ZJGW8tpT7lHvMiyHQLUO8rvp2/AyDxULeWsZKyhl7XxAP6Oymh9oXwDV28rPHSth kKeTzlSD3Z9SSlTmslCDPPosAdUapvKfMvMZk26T08loVNojYZlOMyP/Buox+m73 MiSdScTkYViAx8nMzMzMzMzMzMzM/rf9BdNEpMuiLBLIAAAAAElFTkSuQmCC" height="117" preserveAspectRatio="none"/> + <path fill="rgb(27,59,59)" d="M1380.123 -2405.9395 L2486.2834 -2405.9395 L2486.2834 -1985.1571 L1380.123 -1985.1571 Z" clip-path="url(#clipPath2)" transform="matrix(0.2313,0,0,0.2313,-309.6237,565.9246)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1380.123 -2405.9395 L2486.2834 -2405.9395 L2486.2834 -1985.1571 L1380.123 -1985.1571 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1857.3447" xml:space="preserve" y="-2363.8472" clip-path="url(#clipPath2)" stroke="none">LayerRepo</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4689,0,0,1.4689,20.0007,158.8351)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath5)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABnCAYAAADBsb2iAAACxklEQVR42u3Y2Uoc URSG0Z7tjhrbATuKolFQFEQcgiZEwcQMmvd/n+wDWxAvu+rquH5Yt9XQUB/nVKdj ZmZmZmZmZmZmZmZmda+besC70X2ltZCUB/fDIAzDCHgXhvne99uIyktMykPH4UNY Ch+B6i3n+z7JuDSOSi/rVB64EjbCLGwD1dsKm2Etw7KQUZn7dNLPh5SYfAp74Sic hFOgWuUdPw6HYSesh8W8rXTnDcogrznlZLKfP3QVbsJXoFrlHf8SzvMQsZ0Hi1GT oAzzqDPLh16G7+Eh/ASqVd7x+wzLWd5OVvPG0igoy1mnk3x4+aE/4QmoVnnHH/MA cRE+57VnnN9WGwelXHdus17lB/8B1XoOv/OUcpnfUgQFmMvTm6AcvApKV1AAQQEE BRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzpICiCAggKICiAoAgKCIqg AIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACCAggKICiC AggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAI CgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICgiIogKAAguJPB0ERFEBQ AEEBBEVQQFAEBRAUQFAAQZknKCfhJvwIf8MzUK3yjv8Kd+Gi7aBsheNwncV6zHoB dSrv+EP4Fs7DflhrIyiLYTMc5oNvs1r3QLXuMibX+bljN0zDQpOgDMIky7QTjsJZ HoGu8m4F1OciDxCned2Z5W1lNG9Qynr5gKWwkd9S9vIHDoFqHeQ1ZzdjMs3DxaDT YKVE/TzmlKvPSp5W1jMwQJ3W812f5slkkp9Aep2Ge4nKMMMyzocDdRvnOz/Kk0mv yXXnbVS6+UDg/WklJGZmZmZmZmZmZmbW4v4DMdSmeyTaKiQAAAAASUVORK5CYII=" height="103" preserveAspectRatio="none"/> + <path fill="rgb(98,69,44)" d="M1380.123 -1955.1571 L2486.2834 -1955.1571 L2486.2834 -1593.1671 L1380.123 -1593.1671 Z" clip-path="url(#clipPath2)" transform="matrix(0.2313,0,0,0.2313,-309.6237,461.6786)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1380.123 -1955.1571 L2486.2834 -1955.1571 L2486.2834 -1593.1671 L1380.123 -1593.1671 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1857.3447" xml:space="preserve" y="-1915.035" clip-path="url(#clipPath2)" stroke="none">ParamRepo</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.3946,0,0,1.3946,30.2035,29.7678)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath6)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABhCAYAAAAX6F6/AAACq0lEQVR42u3YW08T ARSFUQq0FLmFm4BBES8oqAFBRCOCgijq//8/7kkOCeGx7YMZ1k7Wo9PEZL6cYWzM zMzMzMzMzMzMzMzM2r1OGQfujc4tIwtJ8+CJmIxu9IB7oVvv/cQoonITk+ah/XgQ szEPtN5cve/Nez9VYRkqKuP1kOlYiJVYi0dA623U+75UcekPc6l06h9PVUzWYyt2 Yjf2gFZ7HS/icazWtdKrQ2OgoEzWudNcJk/rR47iJD4DrfUpPsZBhWUzFm9dKQMF pVtVWqvL5DBO43tcAq11EecVl/3YrsNietigzNX31G5dJk1MfsVvoLWu4yrO6quk +fR5WF8sIwnKXp1Bl/WDf4HW+lOHw7c4jpeCAowiKB8EBRAUQFAAQREUQFAAQQEE RVBAUAQFEBRAUABBERRAUABBAQRFUEBQBAUQFEBQAEERFEBQAEEBBEVQQFAEBRAU QFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQTFfzgIiqAAggIICiAoggKC IiiAoACCAgiKoACCAggKICiCAoIiKICgAIICCIqgAIICCAogKIICgiIogKAAggII iqAAggIICiAoggKCIiiAoACCAgiKoACCAggKICiCAoIiKMD/F5TdOImLuK4fBNqp ORp+xnkcjTooG/GqSnUWP+rHgHa6quPhNN7H81gdRVBmqkzNA/frs+drhQVory9x HG9jK5ZjepigTNYDlmIzduJdFas5gw6B1rl5tw/iTR0TzVfKQkzF+NiAa/5hL2Zj pf6W0pTqWf0I0E7NO74dT2I9Futzp1vHxtigV8pEVWmmCrVUp88K0FrLpQnJfMWk N8x1cjcq3QpLvz6DgHbrl179+WN8mOvkblQ69UDg/hlJSMzMzMzMzMzMzMxshPsH LTbpPP65WBAAAAAASUVORK5CYII=" height="97" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M1407.972 -2337.3108 L2458.4343 -2337.3108 L2458.4343 -2018.0977 L1407.972 -2018.0977 Z" clip-path="url(#clipPath2)" transform="matrix(0.2436,0,0,0.2436,-333.4375,578.8293)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1407.972 -2337.3108 L2458.4343 -2337.3108 L2458.4343 -2018.0977 L1407.972 -2018.0977 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1848.916" xml:space="preserve" y="-2291.8345" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,50.5881,71.2872)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath7)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0 8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8 U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/> + <path fill="rgb(126,144,144)" d="M1436.9282 -2246.135 L1658.8811 -2246.135 L1658.8811 -2162.3054 L1436.9282 -2162.3054 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1428.9282,2254.135)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1436.9282 -2246.135 L1658.8811 -2246.135 L1658.8811 -2162.3054 L1436.9282 -2162.3054 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1455.1888" xml:space="preserve" y="-2194.5269" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,133.8068,71.2872)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath8)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0 8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8 U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/> + <path fill="rgb(126,144,144)" d="M1681.9188 -2246.135 L1903.8716 -2246.135 L1903.8716 -2162.3054 L1681.9188 -2162.3054 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1673.9188,2254.135)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1681.9188 -2246.135 L1903.8716 -2246.135 L1903.8716 -2162.3054 L1681.9188 -2162.3054 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1691.7507" xml:space="preserve" y="-2194.5269" clip-path="url(#clipPath2)" stroke="none">SigmoidLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,217.0254,74.7153)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath9)" width="261" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQUAAADGCAYAAADbnZU/AAADlElEQVR42u3X7UoU ARiG4Z1d3fzAVPwitMhIF6xQarPsR2plRZ3/+fQOPB6Au4vM0PXA9XcWFt6bmcHA zMzMzMzMzMzM7BHXAL220BgMy6gsAb00yh03iwhC+7BxWSlrZR3olbXc7zj33Cwi CO2Dt8pu2S8HQOe1t7qXu93KHc8VhvZVYzkP2ilH5biclFOgF17nbo9yx+u56+Gs UXiSwhyWSTkv03IJdN7H8iF3O8kdb+WuZ4pC+4qxmroc58FX5brcAp13U77mbs9z xzu569GsUVjLN8lJ3hDaINyV30Dn/So/crfT3PFe7nquKOzn2+Qy9Wl/7C/QeX8S htvc72nuWRRAFEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAF UQBREAUQBVEAURAFEAVRAFEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBUAU RAFEQRRAFEQBREEUQBREAURBFEAURAFEQRQAUQBEARAFQBQAUQBEARAFQBQAUQBE ARAFQBT84SAKogCiIAogCqIAoiAKIAqiAKIgCiAKogCiIAqAKACiAIgCIAqAKACi AIgCIAqAKACiAIgCIAr+bBAFUQBREAUQBVEAURAFEAVRAFEQBRAFUQBREAVAFABR AEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAFUQBREAUQBVEAURAFEAVRAFEQ BRAFUQBEARAFQBQAUQBEARAFQBQAUQBEARAFQBQAURAFEAVRAFEQBRAFUQBREAUQ BVEAURAFEAVRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAERBFEAURAFEQRRA FEQBREEUQBREAURBFEAURAEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBVEA URAFEAVRAFEQBRAFUQBREAUQBVEAURAFQBQAUQBEARAFQBQAUQBEARAFQBQAUQD+ hyiclGm5Lj8TBqDb2iDc5W6nueO5o7BadsurclG+pDrfgc77Vm5ytxe5493c9cxR WCnb5UU5K+/L5/wI0G1X5VPu9ix3vJ27nikKwzIuG+WgvCyT8qa8AzrvbWIwyf0e 5J7Hue8HrylLqcrTsleelaPyHOiFw9xte7+bueel3Pdg1reF+zCspzKbQK9s5H7v gzAczLEmDxjlYct59QD6Yzn3O8o9N4MFrQF6zczMzMzMzMzMzOxx9g+9kLh6Jr14 3AAAAABJRU5ErkJggg==" height="198" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M1926.9094 -2236.0427 L2167.0415 -2236.0427 L2167.0415 -2058.5679 L1926.9094 -2058.5679 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1918.9094,2244.0427)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1926.9094 -2236.0427 L2167.0415 -2236.0427 L2167.0415 -2058.5679 L1926.9094 -2058.5679 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1962.6884" xml:space="preserve" y="-2189.4087" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,220.113,97.7309)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath10)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0 8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8 U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/> + <path fill="rgb(126,144,144)" d="M1935.999 -2168.2864 L2157.9519 -2168.2864 L2157.9519 -2084.4565 L1935.999 -2084.4565 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1927.999,2176.2863)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1935.999 -2168.2864 L2157.9519 -2168.2864 L2157.9519 -2084.4565 L1935.999 -2084.4565 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1954.2596" xml:space="preserve" y="-2116.6782" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,50.5881,109.953)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath11)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0 8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8 U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/> + <path fill="rgb(126,144,144)" d="M1436.9282 -2132.3054 L1658.8811 -2132.3054 L1658.8811 -2048.4756 L1436.9282 -2048.4756 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1428.9282,2140.3053)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1436.9282 -2132.3054 L1658.8811 -2132.3054 L1658.8811 -2048.4756 L1436.9282 -2048.4756 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1455.1888" xml:space="preserve" y="-2080.697" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,133.8068,109.953)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath12)" width="242" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPIAAABoCAYAAADLla2BAAACgElEQVR42u3YWU9T URiFYVqmtiRimVQcmfRCcQAhGhVwQBz+///xO8m6MvGClo0xPit5LrubkLxnnzIz Y2ZmZmZmZmZm9h+uB/wVVxZwv8yWOeBazaa/3rQRdwctlEEZlSXgWozS3Xw67E0b cXfozbJWNsotoJmusfWymu6W0uHsJCH38yRYyoH3ylbZK4+BpnbT292yktt5fpJb uQt5MU+E7rAn5UV5XY6BZo7KYXmei3OzLKfH/mVD7q7xYW7jrUT8tpyWj0AzZ+Wk vCn75WFu5cGkIY/yrr6Xm7iL+Lx8A5q5KF8S80HZyf+nhtOEvJF39uM8Lbov+gk0 8yMxn+UC3RUyCFnIIGRAyCBkIYOQhQxCBoQMQhYyCFnIIGRAyICQQchCBiEDQgaE DEIWMggZEDIgZBCykEHIgJABIYOQhQxCBoQMCBmELGQQspBByICQQchCBiELGYQM CBmELGQQspBByICQQchCBiELGYQMCBmELGQQspBByICQQchCBiELGYQMCBmELGQQ spBByICQASGDkIUMQgaEDAgZhCxkEDIgZEDIIGQhg5ABIQNCBiELGYTsjw1CBoQM QhYyCFnIIGTgL4d8lIMv8kVAG9/L13JaDq8q5PUcdFA+lM/5EqCN8/KpvC+vynZZ nSbkYQ54VPbzet0dfgI0012Y7/IW/LQ8KOMymCTk7gOLZbls5lZ+lifEAdDUy0S8 U26XG2Wh9C4bcveB+bxer5Q7eTJs5XCgje10dj8Rj/N2PDdpyP08BUZ5Iozzqr0G NLOay3Oc7oa5VC/9Wv17zHMJepBDgbYG+Wm7kP76k9zGfwoauH5TB2xmZmZmZmZm ZvbP7BdvDQGneBdrngAAAABJRU5ErkJggg==" height="104" preserveAspectRatio="none"/> + <path fill="rgb(126,144,144)" d="M1681.9188 -2132.3054 L1903.8716 -2132.3054 L1903.8716 -2048.4756 L1681.9188 -2048.4756 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1673.9188,2140.3053)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1681.9188 -2132.3054 L1903.8716 -2132.3054 L1903.8716 -2048.4756 L1681.9188 -2048.4756 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1717.0369" xml:space="preserve" y="-2080.697" clip-path="url(#clipPath2)" stroke="none">BiasLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,308.7842,74.7153)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath13)" width="261" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQUAAADGCAYAAADbnZU/AAADlElEQVR42u3X7UoU ARiG4Z1d3fzAVPwitMhIF6xQarPsR2plRZ3/+fQOPB6Au4vM0PXA9XcWFt6bmcHA zMzMzMzMzMzM7BHXAL220BgMy6gsAb00yh03iwhC+7BxWSlrZR3olbXc7zj33Cwi CO2Dt8pu2S8HQOe1t7qXu93KHc8VhvZVYzkP2ilH5biclFOgF17nbo9yx+u56+Gs UXiSwhyWSTkv03IJdN7H8iF3O8kdb+WuZ4pC+4qxmroc58FX5brcAp13U77mbs9z xzu569GsUVjLN8lJ3hDaINyV30Dn/So/crfT3PFe7nquKOzn2+Qy9Wl/7C/QeX8S htvc72nuWRRAFEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAF UQBREAUQBVEAURAFEAVRAFEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBUAU RAFEQRRAFEQBREEUQBREAURBFEAURAFEQRQAUQBEARAFQBQAUQBEARAFQBQAUQBE ARAFQBT84SAKogCiIAogCqIAoiAKIAqiAKIgCiAKogCiIAqAKACiAIgCIAqAKACi AIgCIAqAKACiAIgCIAr+bBAFUQBREAUQBVEAURAFEAVRAFEQBRAFUQBREAVAFABR AEQBEAVAFABRAEQBEAVAFABRAEQBEAVRAFEQBRAFUQBREAUQBVEAURAFEAVRAFEQ BRAFUQBEARAFQBQAUQBEARAFQBQAUQBEARAFQBQAURAFEAVRAFEQBRAFUQBREAUQ BVEAURAFEAVRAEQBEAVAFABRAEQBEAVAFABRAEQBEAVAFABRAERBFEAURAFEQRRA FEQBREEUQBREAURBFEAURAEQBUAUAFEARAEQBUAUAFEARAEQBUAUAFEARAEQBVEA URAFEAVRAFEQBRAFUQBREAUQBVEAURAFQBQAUQBEARAFQBQAUQBEARAFQBQAUQD+ hyiclGm5Lj8TBqDb2iDc5W6nueO5o7BadsurclG+pDrfgc77Vm5ytxe5493c9cxR WCnb5UU5K+/L5/wI0G1X5VPu9ix3vJ27nikKwzIuG+WgvCyT8qa8AzrvbWIwyf0e 5J7Hue8HrylLqcrTsleelaPyHOiFw9xte7+bueel3Pdg1reF+zCspzKbQK9s5H7v gzAczLEmDxjlYct59QD6Yzn3O8o9N4MFrQF6zczMzMzMzMzMzOxx9g+9kLh6Jr14 3AAAAABJRU5ErkJggg==" height="198" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M2197.0415 -2236.0427 L2437.1736 -2236.0427 L2437.1736 -2058.5679 L2197.0415 -2058.5679 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2189.0414,2244.0427)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(68,97,97)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(68,97,97)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2197.0415 -2236.0427 L2437.1736 -2236.0427 L2437.1736 -2058.5679 L2197.0415 -2058.5679 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2232.8203" xml:space="preserve" y="-2189.4087" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,304.9335,206.0711)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath14)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(124,99,78)" d="M2185.7053 -1849.3396 L2391.7996 -1849.3396 L2391.7996 -1671.8649 L2185.7053 -1671.8649 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2177.7053,1857.3396)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2185.7053 -1849.3396 L2391.7996 -1849.3396 L2391.7996 -1671.8649 L2185.7053 -1671.8649 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2263.4663" xml:space="preserve" y="-1802.7056" clip-path="url(#clipPath2)" stroke="none">...</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,40.2999,189.7114)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath15)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX 7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8 72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp 5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0 oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ RU5ErkJggg==" height="134" preserveAspectRatio="none"/> + <path fill="rgb(124,99,78)" d="M1407.7732 -1896.3687 L1692.7732 -1896.3687 L1692.7732 -1769.1991 L1407.7732 -1769.1991 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1256.3226,1711.6084)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1407.7732 -1896.3687 L1692.7732 -1896.3687 L1692.7732 -1769.1991 L1407.7732 -1769.1991 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1457.5574" xml:space="preserve" y="-1855.0193" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text> + </g> + <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)"> + <path d="M1429.0468 -1837.2889 L1671.4996 -1837.2889 L1671.4996 -1790.2406 L1429.0468 -1790.2406 Z" stroke="none" clip-path="url(#clipPath2)"/> + </g> + <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1482.8435" xml:space="preserve" y="-1804.3562" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,147.2995,189.7114)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath16)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX 7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8 72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp 5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0 oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ RU5ErkJggg==" height="134" preserveAspectRatio="none"/> + <path fill="rgb(124,99,78)" d="M1722.7732 -1896.3687 L2007.7732 -1896.3687 L2007.7732 -1769.1991 L1722.7732 -1769.1991 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1539.27,1711.6084)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1722.7732 -1896.3687 L2007.7732 -1896.3687 L2007.7732 -1769.1991 L1722.7732 -1769.1991 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1789.4148" xml:space="preserve" y="-1855.0193" clip-path="url(#clipPath2)" stroke="none">BiasParam</text> + </g> + <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)"> + <path d="M1744.0468 -1837.2889 L1986.4996 -1837.2889 L1986.4996 -1790.2406 L1744.0468 -1790.2406 Z" stroke="none" clip-path="url(#clipPath2)"/> + </g> + <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1797.8435" xml:space="preserve" y="-1804.3562" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,40.2999,235.9515)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath17)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX 7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8 72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp 5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0 oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ RU5ErkJggg==" height="134" preserveAspectRatio="none"/> + <path fill="rgb(124,99,78)" d="M1407.7732 -1760.2406 L1692.7732 -1760.2406 L1692.7732 -1633.0709 L1407.7732 -1633.0709 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1256.3226,1589.3319)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1407.7732 -1760.2406 L1692.7732 -1760.2406 L1692.7732 -1633.0709 L1407.7732 -1633.0709 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1457.5574" xml:space="preserve" y="-1718.8911" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text> + </g> + <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)"> + <path d="M1429.0468 -1701.1608 L1671.4996 -1701.1608 L1671.4996 -1654.1124 L1429.0468 -1654.1124 Z" stroke="none" clip-path="url(#clipPath2)"/> + </g> + <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1482.8435" xml:space="preserve" y="-1668.228" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3782,0,0,0.3782,147.2995,235.9515)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath18)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAACGCAYAAAAcqXWFAAAC/klEQVR42u3YyU4U URiG4R6BxsgsogYZnBaIARlcAKLiEPH+78e/kq8T445uFqT6+ZJn2UVCUm9OnU7H zMzMzMzMzMzMzB7susBMuteI9Eo/BsBM6acBvWnj0s3DhmW+jMoiMFNGef+H00Rl fDKZy0OXy1rZKE+AmdC876tlKR0YR2WioAzykOaBz8pO2S+vgZnQvO8vy1Y6MEoX 7nxKGZ9OlhKT5uHvy3E5BVrvpByVg/IqUXmcLtw5KM3dyUKqtJOYnJfL8gVoveu8 72eJynZZyX3KREFpjjfrOfZ8LFfle/kFtN7PclMuclLZyz3qwjRB2cjnzmmq1fyh P0Dr3SYqn3Og2M8BQ1AAQQEEBRAUQQEEBRAUQFD8o0FQBAUQFEBQAEERFEBQAEEB BAUQFEEBBAUQFEBQBAUQFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEE BRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU QFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBT/aBAUQQEEBRAUQFAE BRAUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQFEBRBAUERFEBQAEEB BEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABBAQRFUABBAQQF EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREU4KEF5Tp/4BZovd/lR7m6z6Cs50HH efBNTilAuzWHh2/lohyV3bI2TVCaH66WnXJYPiUqX4HWa644LstZOSjb6cH8JEHp 5YdL5Xl5Uz6Uk3IOtN5ZPnUOc+2xlR7MTRKU5gfDsphjzouyl7C8A1rvbUKym0PF anow6Eywbj57mho9Kiu5oN0sT4GZsJl71OXEZC5fL51pojLMfcoocQFmw2Le+/l0 oD/J587/UemmSv0YADNh/M73/mmBmZmZmZmZmZmZmT2E/QVP/jW3tIKqpgAAAABJ RU5ErkJggg==" height="134" preserveAspectRatio="none"/> + <path fill="rgb(124,99,78)" d="M1722.7732 -1760.2406 L2007.7732 -1760.2406 L2007.7732 -1633.0709 L1722.7732 -1633.0709 Z" clip-path="url(#clipPath2)" transform="matrix(0.8982,0,0,0.8982,-1539.27,1589.3319)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(98,69,44)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(98,69,44)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1722.7732 -1760.2406 L2007.7732 -1760.2406 L2007.7732 -1633.0709 L1722.7732 -1633.0709 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1789.4148" xml:space="preserve" y="-1718.8911" clip-path="url(#clipPath2)" stroke="none">BiasParam</text> + </g> + <g fill="rgb(197,174,155)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(197,174,155)"> + <path d="M1744.0468 -1701.1608 L1986.4996 -1701.1608 L1986.4996 -1654.1124 L1744.0468 -1654.1124 Z" stroke="none" clip-path="url(#clipPath2)"/> + </g> + <g font-size="28px" stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1797.8435" xml:space="preserve" y="-1668.228" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text> + </g> + <g fill="rgb(91,129,91)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(91,129,91)"> + <circle r="39.1358" clip-path="url(#clipPath2)" cx="3348.7556" cy="-2243.1534" stroke="none"/> + </g> + <g fill="rgb(91,129,91)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(91,129,91)"> + <circle r="36.6604" clip-path="url(#clipPath2)" cx="3249.1979" cy="-2127.8892" stroke="none"/> + <circle r="35.4226" clip-path="url(#clipPath2)" cx="3431.8413" cy="-2103.5987" stroke="none"/> + <path fill="rgb(124,78,78)" d="M2576.894 -2251.7859 L3008.7498 -2251.7859 L2960.7659 -2140.8616 L2528.9102 -2140.8616 Z" clip-path="url(#clipPath2)" fill-rule="evenodd" stroke="none"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2617.113" xml:space="preserve" y="-2186.6304" clip-path="url(#clipPath2)" stroke="none">Compile & Optimize</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45"> + <path fill="none" d="M2576.894 -2251.7859 L3008.7498 -2251.7859 L2960.7659 -2140.8616 L2528.9102 -2140.8616 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,480.3355,299.8839)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath19)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M2702.0779 -1573.1605 L2908.1721 -1573.1605 L2908.1721 -1395.6858 L2702.0779 -1395.6858 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2694.0779,1581.1605)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2702.0779 -1573.1605 L2908.1721 -1573.1605 L2908.1721 -1395.6858 L2702.0779 -1395.6858 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2729.2666" xml:space="preserve" y="-1526.5265" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,494.7456,324.2524)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath20)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M2744.5002 -1501.4211 L2950.5947 -1501.4211 L2950.5947 -1323.9463 L2744.5002 -1323.9463 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2736.5003,1509.4212)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2744.5002 -1501.4211 L2950.5947 -1501.4211 L2950.5947 -1323.9463 L2744.5002 -1323.9463 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2771.689" xml:space="preserve" y="-1454.7871" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,511.2065,346.6094)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath21)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M2792.96 -1435.6035 L2999.0544 -1435.6035 L2999.0544 -1258.1287 L2792.96 -1258.1287 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2784.96,1443.6035)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2792.96 -1435.6035 L2999.0544 -1435.6035 L2999.0544 -1258.1287 L2792.96 -1258.1287 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2820.1487" xml:space="preserve" y="-1388.9695" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text> + </g> + <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)"> + <path d="M2213.0237 -1479.0284 L2618.771 -1479.0284 L2573.688 -1379.7079 L2167.9407 -1379.7079 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2283.7827" xml:space="preserve" y="-1419.6748" clip-path="url(#clipPath2)" stroke="none">Import Params</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45"> + <path fill="none" d="M2213.0237 -1479.0284 L2618.771 -1479.0284 L2573.688 -1379.7079 L2167.9407 -1379.7079 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/> + </g> + <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)"> + <path d="M3168.4236 -1810.2626 L3574.1707 -1810.2626 L3529.0876 -1710.9419 L3123.3406 -1710.9419 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3239.1824" xml:space="preserve" y="-1750.9088" clip-path="url(#clipPath2)" stroke="none">Mini-batching</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45"> + <path fill="none" d="M3168.4236 -1810.2626 L3574.1707 -1810.2626 L3529.0876 -1710.9419 L3123.3406 -1710.9419 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,591.4033,347.4898)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath22)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M3029.0544 -1433.0117 L3235.1487 -1433.0117 L3235.1487 -1255.5369 L3029.0544 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3021.0543,1441.0117)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3029.0544 -1433.0117 L3235.1487 -1433.0117 L3235.1487 -1255.5369 L3029.0544 -1255.5369 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3081.5293" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,664.9966,347.4898)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath23)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M3245.7085 -1433.0117 L3451.8027 -1433.0117 L3451.8027 -1255.5369 L3245.7085 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3237.7085,1441.0117)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3245.7085 -1433.0117 L3451.8027 -1433.0117 L3451.8027 -1255.5369 L3245.7085 -1255.5369 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3298.1833" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,738.5899,347.4898)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath24)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M3462.3625 -1433.0117 L3668.457 -1433.0117 L3668.457 -1255.5369 L3462.3625 -1255.5369 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-3454.3626,1441.0117)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3462.3625 -1433.0117 L3668.457 -1433.0117 L3668.457 -1255.5369 L3462.3625 -1255.5369 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3514.8374" xml:space="preserve" y="-1386.3777" clip-path="url(#clipPath2)" stroke="none">Reader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,480.3355,416.2158)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath25)" width="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOMAAADGCAYAAAAg7zfJAAADTklEQVR42u3WW0tU URzG4dkzOnnAVDwRWmSkA1YoNVl2kVpZUd//+/Tf8HrneNgzN8nzwnO7Nmz4sVav Z2ZmZmZmZmZmj2YN0MlMI+yXQZkDHmSQfppZhNgeNiwLZaksA/eylG6G6aiZRYjt wWtls2yXHWCitpGt9LKWfqYKsr1a53PQRtkr++WgHAK3ep1e9tLPcnrqd43xScre LaNyXMblFJjoY/mQXkbpZy09dYqxvVIXU/V+Dj4r5+USmOiifE0vx+lnIz0Nusa4 lLfvQW7ENsSr8huY6Ff5kV7G6WcrPU0V43bewKepvv3YX2CiPwnyMt0cpiMxghhB jGIEMQJiBDECYgQxAmIEMYoRxAhiFCOIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxi BDGCGMUIYgQxihHECIgRxAiIEcQoRhAjiFGMIEYQoxhBjCBGMYIYQYxiBDGCGMUI YgQxihHECGIUI4gRxChGECMgRhAjIEYQoxhBjCBGMYIYQYxiBDGCGMUIYgQxihHE CGIUI4gRxChGECOIUYwgRhCjGEGMgBhBjIAYQYx+OIgRxChGECOIUYwgRhCjGEGM IEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBEQI4gRECOIERAjiFGMIEYQoxhBjCBG MYIYQYxiBDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRkCMIEZAjCBGMYIYQYxi BDGCGMUIYgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghgBMYIYATGCGMUI YgQxihHECGIUI4gRxChGECOIUYwgRhCjGEGMIEYxghhBjGIEMYIYxQhiBMQIYgTE CGL0w0GMIEYxghhBjGIEMYIYxQhiBDGKEcQIYhQjiBHEKEb432M8KONyXn4mSOBm bYhX6WWcfqaOcbFsllflpHxJ7d+Bib6Vi/Rykn4201PnGBfKenlRjsr78jkfAW52 Vj6ll6P0s56eOsXYL8OyUnbKyzIqb8o7YKK3iXCUbnbS0TBdPXhNmUvNT8tWeVb2 ynPgVrvppe1mNR3Npate19vxOsjl1L0K3MtKurkOsd+bYk0OGOSw+Vy1wN3m080g HTW9Ga0BOjEzMzMzMzMzs8ewf53rvEen1I5nAAAAAElFTkSuQmCC" height="198" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M2702.0779 -1230.6865 L2908.1721 -1230.6865 L2908.1721 -1053.2118 L2702.0779 -1053.2118 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2694.0779,1238.6866)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(241,211,211)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(241,211,211)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2702.0779 -1230.6865 L2908.1721 -1230.6865 L2908.1721 -1053.2118 L2702.0779 -1053.2118 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2729.2666" xml:space="preserve" y="-1184.0525" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text> + </g> + <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)"> + <path d="M2175.4485 -1230.6865 L2581.1958 -1230.6865 L2536.1128 -1131.366 L2130.3655 -1131.366 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2263.0649" xml:space="preserve" y="-1171.3329" clip-path="url(#clipPath2)" stroke="none">Save Params</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45"> + <path fill="none" d="M2175.4485 -1230.6865 L2581.1958 -1230.6865 L2536.1128 -1131.366 L2130.3655 -1131.366 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/> + </g> + <g fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" stroke="rgb(124,78,78)"> + <path d="M2200.6279 -1354.8575 L2606.375 -1354.8575 L2561.292 -1255.5369 L2155.5449 -1255.5369 Z" fill-rule="evenodd" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2254.5293" xml:space="preserve" y="-1295.5039" clip-path="url(#clipPath2)" stroke="none">Generate Params</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(161,113,113)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(161,113,113)" stroke-miterlimit="1.45"> + <path fill="none" d="M2200.6279 -1354.8575 L2606.375 -1354.8575 L2561.292 -1255.5369 L2155.5449 -1255.5369 Z" fill-rule="evenodd" clip-path="url(#clipPath2)"/> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.8492,0,0,0.8492,586.308,294.7887)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath26)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAA2CAYAAAAGY2bwAAACXUlEQVR42u3d205T URQF0NPSlla5FREJiCCKQQqiUYN3CYLX//8f1wmrScNjTx90d8xkJDztJiR7Zq32 YVeViIiIiIiIiIiIiIiIlJtWagNzZ3z/Z1Ym9aGd0A29sAgUr5fqe78wUS6NymQh Dx2EpbASVoG5sBzuhn4OFe0mhdLOMqkPHIbNsB0eAsXbCVthIweJcam0mkwngyyT ukgOwlEYhROgaMfhMOzlMLGcA8bUhdLNNWczy+Q0vA3vwwegWPUdPw+vwvOwm4NF f9q1p5VttJLTyVGWyZdwGa6AYn0LF1ksZzlQ3MuNpVGhrOY+NcrD6w/6EX4BxfoZ rnOAeJ2rz/1wJ78KaVwoJzkKXeUH/gGK9TsHh4vcTJ7lVx8KBZiqUL6Hr+HNrQml rVAAhQIoFEChKBRAoQAKBVAoCgUUikIBFAqgUACFolAAhQIoFECh+KeDQlEogEIB FAqgUBQKKBSFAigUQKEACkWhAAoFUCjAf1gokw991YXioS9g5hPKTAplVN28bXxZ edsY5uFt43p4+FzdvG38dFYrz0rYDkc5+tSPJ9cPpl9XXqiHEo3v9kVuJS/DQdho WijdsBQehCfhLJyHj+ETUKz6jr/L6eQ4PArD0G9SKJ0wCOu59hzm6vMiywUo12lu Jo/DVm4ri9MWSpVfvvRySlnPQ3fDXtgHirWXU8lO/rqzlsNFJ4eNatopZVwq9e60 nAcPs2CGQHHGd3stf5RZyjLpNplObpdKJ4tlMfUn/gbKMXm3e1kknSyTVjWjtFIb mButCSIiIiIiIiIiIiLyL+Uv3bhF252M7V8AAAAASUVORK5CYII=" height="54" preserveAspectRatio="none"/> + <path fill="rgb(63,99,63)" d="M3029.0544 -1573.1605 L3668.457 -1573.1605 L3668.457 -1487.7527 L3029.0544 -1487.7527 Z" clip-path="url(#clipPath2)" transform="matrix(0.4,0,0,0.4,-1202.4217,638.4642)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3029.0544 -1573.1605 L3668.457 -1573.1605 L3668.457 -1487.7527 L3029.0544 -1487.7527 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="28px" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3298.1833" xml:space="preserve" y="-1520.7633" clip-path="url(#clipPath2)" stroke="none">Buffer</text> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="white" stroke-width="3" stroke-miterlimit="1.45"> + <path fill="none" d="M1681.9138 -2204.2202 L1668.9137 -2204.2202" clip-path="url(#clipPath2)"/> + <path d="M1658.9137 -2204.2202 L1673.9137 -2197.9702 L1670.1637 -2204.2202 L1673.9137 -2210.4702 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1638.8868 -2246.1235 L1641.4056 -2247.1904 L1658.8074 -2253.1829 L1677.2861 -2258.2532 L1696.842 -2262.4019 L1717.475 -2265.6284 L1739.1849 -2267.9331 L1761.972 -2269.3159 L1785.8363 -2269.7769 L1807.5276 -2269.7769 L1831.0465 -2269.5217 L1852.7979 -2268.7561 L1872.7815 -2267.48 L1890.9974 -2265.6934 L1907.4458 -2263.3965 L1922.1265 -2260.5891 L1935.0396 -2257.2712 L1946.1851 -2253.4431 L1980.6194 -2239.7405" clip-path="url(#clipPath2)"/> + <path d="M1989.9108 -2236.0432 L1978.2844 -2247.3962 L1979.4579 -2240.2026 L1973.6628 -2235.782 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1619.7458 -2132.3184 L1644.1611 -2145.8757 L1671.826 -2159.5718 L1672.7616 -2159.9778" clip-path="url(#clipPath2)"/> + <path d="M1681.9351 -2163.9587 L1665.6868 -2163.7207 L1671.615 -2159.4802 L1670.663 -2152.2539 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1681.9138 -2090.3904 L1668.9137 -2090.3904" clip-path="url(#clipPath2)"/> + <path d="M1658.9137 -2090.3904 L1673.9137 -2084.1404 L1670.1637 -2090.3904 L1673.9137 -2096.6404 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2167.0378 -2147.3054 L2187.0444 -2147.3054" clip-path="url(#clipPath2)"/> + <path d="M2197.0444 -2147.3054 L2182.0444 -2153.5554 L2185.7944 -2147.3054 L2182.0444 -2141.0554 Z" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(204,204,204)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke-dasharray="24,8" stroke="rgb(204,204,204)" stroke-width="4" stroke-miterlimit="1.45"> + <path fill="none" d="M2056.6875 -2079.072 L2064.1035 -2042.955 L2068.2366 -2026.9589 L2073.6287 -2013.0956 L2076.7969 -2006.9639 L2080.28 -2001.3652 L2084.0779 -1996.2998 L2088.1904 -1991.7676 L2092.6177 -1987.7686 L2097.3599 -1984.3027 L2102.4167 -1981.3701 L2107.7886 -1978.9707 L2113.4751 -1977.1045 L2119.4763 -1975.7715 L2125.7922 -1974.9717 L2132.4231 -1974.7051 L2144.491 -1974.7051 L2151.2251 -1974.3287 L2157.8513 -1973.1997 L2164.3696 -1971.3179 L2170.7798 -1968.6835 L2177.0818 -1965.2963 L2183.2761 -1961.1564 L2189.3621 -1956.2638 L2195.3403 -1950.6184 L2201.2104 -1944.2205 L2206.9724 -1937.0697 L2212.6265 -1929.1664 L2218.1726 -1920.5103 L2228.9407 -1900.9398 L2239.2769 -1878.3586 L2249.3342 -1854.4214" clip-path="url(#clipPath2)"/> + <path d="M2055.5813 -2084.4597 L2049.7122 -2072.0251 L2056.9641 -2077.7251 L2065.875 -2075.3438 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path d="M2251.4646 -1849.3507 L2254.8098 -1862.6876 L2248.8018 -1855.6891 L2239.5979 -1856.2965 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2310.2014 -2053.1218 L2295.6604 -1854.8124" clip-path="url(#clipPath2)"/> + <path d="M2310.6038 -2058.6072 L2301.5713 -2048.2402 L2310.1008 -2051.7505 L2318.0271 -2047.0332 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path d="M2295.2583 -1849.3271 L2304.2905 -1859.6946 L2295.761 -1856.1837 L2287.8345 -1860.9009 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1548.4835 -2042.9644 L1550.2057 -1901.881" clip-path="url(#clipPath2)"/> + <path d="M1548.4164 -2048.4639 L1540.3013 -2037.364 L1548.5004 -2041.5894 L1556.8 -2037.5654 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path d="M1550.2728 -1896.3813 L1558.3879 -1907.4812 L1550.189 -1903.2559 L1541.8892 -1907.2798 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1792.8953 -2042.952 L1792.8953 -1901.8639" clip-path="url(#clipPath2)"/> + <path d="M1792.8953 -2048.4521 L1784.6453 -2037.4521 L1792.8953 -2041.5771 L1801.1453 -2037.4521 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path d="M1792.8953 -1896.3639 L1801.1453 -1907.3639 L1792.8953 -1903.2389 L1784.6453 -1907.3639 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1431.4404 -2208.9963 L1423.4104 -2209.3257 L1411.0759 -2208.9231 L1399.5372 -2206.6707 L1394.0663 -2204.8508 L1388.7943 -2202.5686 L1378.847 -2196.6169 L1369.6957 -2188.8157 L1361.3401 -2179.1646 L1353.7803 -2167.6638 L1347.0161 -2154.3135 L1341.0479 -2139.1133 L1335.8754 -2122.0637 L1331.4985 -2103.1643 L1327.9176 -2082.415 L1325.1323 -2059.8164 L1323.1429 -2035.3678 L1321.9492 -2009.0697 L1321.5514 -1980.9219 L1321.5514 -1929.2371 L1321.8862 -1901.0729 L1322.891 -1874.7258 L1324.5654 -1850.1958 L1326.9097 -1827.4828 L1329.9237 -1806.5868 L1333.6075 -1787.5078 L1337.9612 -1770.246 L1342.9846 -1754.801 L1348.6779 -1741.1732 L1355.0409 -1729.3625 L1362.0736 -1719.3688 L1369.7762 -1711.1921 L1378.1486 -1704.8324 L1387.1908 -1700.2898 L1396.9027 -1697.5643 L1402.288 -1697.093 L1402.3879 -1697.093" clip-path="url(#clipPath2)"/> + <path d="M1436.9358 -2208.771 L1426.2831 -2217.4648 L1430.0665 -2209.0527 L1425.6071 -2200.9785 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path d="M1407.8699 -1696.6477 L1397.574 -1705.7612 L1401.0175 -1697.2043 L1396.238 -1689.3154 Z" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.3397,0,0,0.3397,-434.7918,836.9742)" fill="rgb(169,192,169)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(169,192,169)" stroke-width="3" stroke-miterlimit="1.45"> + <path fill="none" d="M3323.1741 -2213.5359 L3279.698 -2163.2012" clip-path="url(#clipPath2)"/> + <path d="M3273.1614 -2155.6333 L3287.6963 -2162.8997 L3280.5151 -2164.1472 L3278.2363 -2171.0706 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3285.5383 -2123.0562 L3386.8152 -2109.5869" clip-path="url(#clipPath2)"/> + <path d="M3396.7278 -2108.2686 L3382.6826 -2116.4417 L3385.5759 -2109.7517 L3381.0347 -2104.0508 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3413.7205 -2134.0354 L3373.8918 -2200.9336" clip-path="url(#clipPath2)"/> + <path d="M3368.7761 -2209.5261 L3371.0793 -2193.4402 L3374.5312 -2199.8596 L3381.8198 -2199.8347 Z" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2486.301 -2196.0615 L2536.3291 -2196.1079" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2552.8291 -2196.1233 L2534.8208 -2205.1064 L2534.8374 -2187.1064 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2984.7827 -2196.3237 L3100.8167 -2196.3237" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3117.3167 -2196.3237 L3099.3167 -2205.3237 L3099.3167 -2187.3237 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2702.1189 -1465.699 L2620.925 -1450.9399" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2604.6912 -1447.989 L2624.0105 -1442.3533 L2620.7913 -1460.0631 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2744.5061 -1416.4689 L2609.3813 -1421.4326" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2592.8926 -1422.0383 L2610.55 -1412.3837 L2611.2109 -1430.3715 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2792.9458 -1363.5251 L2598.1128 -1395.0183" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2581.8242 -1397.6512 L2598.1575 -1385.8943 L2601.0298 -1403.6636 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2191.3652 -1431.3491 L2185.3164 -1431.9592 L2171.98 -1433.9745 L2159.5791 -1436.5656 L2148.1138 -1439.7324 L2137.584 -1443.475 L2127.9897 -1447.7935 L2119.3311 -1452.6876 L2111.6079 -1458.1577 L2104.8203 -1464.2035 L2098.9685 -1470.8251 L2094.052 -1478.0225 L2090.071 -1485.7957 L2087.0256 -1494.1445 L2084.9158 -1503.0693 L2071.7554 -1576.9047" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2068.8601 -1593.1487 L2063.1582 -1573.8488 L2080.8789 -1577.0072 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3348.7556 -1810.2682 L3348.7556 -1976.5781" stroke-width="4" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3348.7556 -1991.7031 L3340.5056 -1975.2031 L3357.0056 -1975.2031 Z" stroke-width="4" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M1867.2858 -1593.1366 L1891.0948 -1429.4773 L1893.8873 -1413.0779 L1897.3948 -1397.3555 L1901.6171 -1382.3101 L1906.5543 -1367.9417 L1912.2065 -1354.2502 L1918.5737 -1341.2358 L1925.6559 -1328.8983 L1933.4529 -1317.2378 L1941.9648 -1306.2543 L1951.1917 -1295.9478 L1961.1335 -1286.3182 L1971.7903 -1277.3657 L1983.162 -1269.0901 L1995.2485 -1261.4916 L2008.0502 -1254.5699 L2021.5667 -1248.3253 L2142.0413 -1197.0393" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2157.2229 -1190.5765 L2144.1863 -1205.9077 L2137.136 -1189.3459 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2550.9702 -1164.0516 L2685.6538 -1152.339" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M2702.0918 -1150.9094 L2684.9392 -1161.4351 L2683.3796 -1143.5028 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M2185.7205 -1322.033 L2164.7954 -1323.8374 L2143.3127 -1326.1602 L2123.0798 -1329.3157 L2104.0972 -1333.3038 L2086.3645 -1338.1248 L2069.8816 -1343.7783 L2054.6489 -1350.2648 L2040.666 -1357.5839 L2027.9333 -1365.7356 L2016.4504 -1374.7202 L2006.2177 -1384.5374 L1997.2349 -1395.1874 L1989.5021 -1406.67 L1983.0193 -1418.9855 L1977.7865 -1432.1337 L1973.8036 -1446.1145 L1971.0708 -1460.9281 L1955.0327 -1576.8114" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M1952.7706 -1593.1556 L1946.3234 -1574.0918 L1964.1533 -1576.5594 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3235.1655 -1432.8428 L3286.5737 -1477.0204" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3299.0876 -1487.7744 L3279.5701 -1482.8685 L3291.302 -1469.2169 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3348.7556 -1433.0472 L3348.7556 -1471.2925" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3348.7556 -1487.7925 L3339.7556 -1469.7925 L3357.7556 -1469.7925 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3462.3457 -1432.8428 L3410.9375 -1477.0204" stroke-width="5" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3398.4236 -1487.7744 L3406.2092 -1469.2169 L3417.9412 -1482.8685 Z" stroke-width="5" clip-path="url(#clipPath2)" stroke="none"/> + <path fill="none" d="M3348.7556 -1573.1875 L3348.7556 -1695.8324" stroke-width="4" clip-path="url(#clipPath2)" stroke="black"/> + <path fill="black" d="M3348.7556 -1710.9574 L3340.5056 -1694.4574 L3357.0056 -1694.4574 Z" stroke-width="4" clip-path="url(#clipPath2)" stroke="none"/> + </g> + </g> +</svg> diff --git a/nerv/doc/source/_static/nerv-hierarchy.svg b/nerv/doc/source/_static/nerv-hierarchy.svg new file mode 100644 index 0000000..3744718 --- /dev/null +++ b/nerv/doc/source/_static/nerv-hierarchy.svg @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill-opacity="1" color-rendering="auto" color-interpolation="auto" text-rendering="auto" stroke="black" stroke-linecap="square" width="1274" stroke-miterlimit="10" shape-rendering="auto" stroke-opacity="1" fill="black" stroke-dasharray="none" font-weight="normal" stroke-width="1" height="396" font-family="'Dialog'" font-style="normal" stroke-linejoin="miter" font-size="12px" stroke-dashoffset="0" image-rendering="auto"> + <!--Generated by ySVG 2.5--> + <defs id="genericDefs"/> + <g> + <defs id="defs1"> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath1"> + <path d="M0 0 L1274 0 L1274 396 L0 396 L0 0 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath2"> + <path d="M932 -390 L4011.835 -390 L4011.835 567.3113 L932 567.3113 L932 -390 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath3"> + <path d="M-32.8943 -337.4574 L2612.8699 -337.4574 L2612.8699 484.9309 L-32.8943 484.9309 L-32.8943 -337.4574 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath4"> + <path d="M-288.3814 -337.4574 L2357.3828 -337.4574 L2357.3828 484.9309 L-288.3814 484.9309 L-288.3814 -337.4574 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath5"> + <path d="M-39.9316 -484.4621 L3039.9033 -484.4621 L3039.9033 472.8492 L-39.9316 472.8492 L-39.9316 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath6"> + <path d="M5.6079 -13.3581 L269.8296 -13.3581 L269.8296 68.7705 L5.6079 68.7705 L5.6079 -13.3581 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath7"> + <path d="M1.8138 -15.5958 L494.2796 -15.5958 L494.2796 137.4783 L1.8138 137.4783 L1.8138 -15.5958 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath8"> + <path d="M1.8138 1.9932 L494.2796 1.9932 L494.2796 155.0673 L1.8138 155.0673 L1.8138 1.9932 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath9"> + <path d="M-223.5607 -156.4302 L495.8168 -156.4302 L495.8168 67.1754 L-223.5607 67.1754 L-223.5607 -156.4302 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath10"> + <path d="M-18.5536 -387.4019 L1699.1757 -387.4019 L1699.1757 146.5233 L-18.5536 146.5233 L-18.5536 -387.4019 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath11"> + <path d="M5.7135 -60.604 L270.1124 -60.604 L270.1124 21.5796 L5.7135 21.5796 L5.7135 -60.604 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath12"> + <path d="M-1150.6636 -320.1173 L534.0324 -320.1173 L534.0324 203.5402 L-1150.6636 203.5402 L-1150.6636 -320.1173 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath13"> + <path d="M-1588.556 -358.7229 L293.157 -358.7229 L293.157 226.1738 L-1588.556 226.1738 L-1588.556 -358.7229 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath14"> + <path d="M-582.4009 -189.1061 L278.339 -189.1061 L278.339 78.4394 L-582.4009 78.4394 L-582.4009 -189.1061 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath15"> + <path d="M-1600.2053 -282.0543 L739.3726 -282.0543 L739.3726 445.1614 L-1600.2053 445.1614 L-1600.2053 -282.0543 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath16"> + <path d="M-2100.4241 -320.2762 L545.3402 -320.2762 L545.3402 502.1121 L-2100.4241 502.1121 L-2100.4241 -320.2762 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath17"> + <path d="M-2499.4963 -340.2573 L306.332 -340.2573 L306.332 531.884 L-2499.4963 531.884 L-2499.4963 -340.2573 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath18"> + <path d="M-582.4009 -128.1903 L278.339 -128.1903 L278.339 139.3552 L-582.4009 139.3552 L-582.4009 -128.1903 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath19"> + <path d="M-3.8789 -158.0155 L852.1881 -158.0155 L852.1881 108.0775 L-3.8789 108.0775 L-3.8789 -158.0155 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath20"> + <path d="M-333.1401 -197.0977 L723.7469 -197.0977 L723.7469 131.4166 L-333.1401 131.4166 L-333.1401 -197.0977 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath21"> + <path d="M-315.7819 -417.1838 L1530.6765 -417.1838 L1530.6765 156.7546 L-315.7819 156.7546 L-315.7819 -417.1838 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath22"> + <path d="M-269.9316 -484.4621 L2809.9033 -484.4621 L2809.9033 472.8492 L-269.9316 472.8492 L-269.9316 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath23"> + <path d="M-1389.7185 -466.8361 L1043.7312 -466.8361 L1043.7312 289.558 L-1389.7185 289.558 L-1389.7185 -466.8361 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath24"> + <path d="M-305.4361 0.5743 L274.2975 0.5743 L274.2975 180.7741 L-305.4361 180.7741 L-305.4361 0.5743 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath25"> + <path d="M-305.4361 -20.1315 L274.2975 -20.1315 L274.2975 160.0683 L-305.4361 160.0683 L-305.4361 -20.1315 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath26"> + <path d="M-577.8283 -358.4779 L2228 -358.4779 L2228 513.6633 L-577.8283 513.6633 L-577.8283 -358.4779 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath27"> + <path d="M-499.9316 -484.4621 L2579.9033 -484.4621 L2579.9033 472.8492 L-499.9316 472.8492 L-499.9316 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath28"> + <path d="M-729.9316 -484.4621 L2349.9033 -484.4621 L2349.9033 472.8492 L-729.9316 472.8492 L-729.9316 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath29"> + <path d="M-989.9316 -394.4621 L2089.9033 -394.4621 L2089.9033 562.8492 L-989.9316 562.8492 L-989.9316 -394.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath30"> + <path d="M-989.9316 -484.4621 L2089.9033 -484.4621 L2089.9033 472.8492 L-989.9316 472.8492 L-989.9316 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath31"> + <path d="M-1242.3081 -484.4621 L1837.5269 -484.4621 L1837.5269 472.8492 L-1242.3081 472.8492 L-1242.3081 -484.4621 Z"/> + </clipPath> + <clipPath clipPathUnits="userSpaceOnUse" id="clipPath32"> + <path d="M-1419.335 -467.669 L1555.9017 -467.669 L1555.9017 457.1298 L-1419.335 457.1298 L-1419.335 -467.669 Z"/> + </clipPath> + </defs> + <g fill="white" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="scale(0.4137,0.4137) translate(-932,390)" stroke="white"> + <rect x="932" width="3080" height="958" y="-390" clip-path="url(#clipPath2)" stroke="none"/> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,15.8394,162.494)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath3)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACk0lEQVR42u3Yb0tT ARjG4Z2p81+WU1uYmGWJEmVqagWZWVJR3//7dB949jZo84WcXTdcbzcYnB/PWa9n ZmZmZmZmZmZmZvd2DTBz7jwi/Zgr88DMGD/3/buIS1MfthCLsRwrwMxon/mlGFQL mmkvk0F98KPYiK14DHTeVj3z6/GgjoqJo9LUydPGZBjbsRf78QrovJfxPHYqLmt1 YPQnCcr4OnlYMWm/4E2cxjnQeWdxHIexW9fKch0a/725enca1mXSxuQyPsdXoPOu 4mOc1EExitX6T3WioLQ12qzXnLP6gtv4CXRe+6xfx0Uc1ZvK2rRB2ao6nVe12i/6 A3Ter/hWV8rreCoogKAAggIIiqAAggIICiAoggKCIiiAoACCAgiKoACCAggKICiC AoIiKICgAIICCIqgAIICCAogKH5sEBRBAQQFEBRAUAQFEBRAUABBAQRFUABBAQQF EBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRA UABBAQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAA QQEEBRAUQQFBERRAUABBAQTl30G5jh/xG+i89ni4ueugbMZ+nMZVfK8vArrtto6I iziK7WmDshTD2Iu38aGicgN03pf4FCf1lvIkVicNSj8W42GdOgdxHO/jEui89m+O d3WdPKu3lfatZX6SoDRVopXYiJ14UWE5BDrvoP7u2I1Rve4s1rExUVDa155BnTnr 9QftqE4foNtG9cwPKyZLdZ00vQk3jspCfdhyxQWYDSv17A8qJv3elGtKv+IyVx8M dN/4me9Pc5mYmZmZmZmZmZmZmZnZfd5ficBAjR/DUPYAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M979.9316 12.4621 L1277.3346 12.4621 L1277.3346 102.4621 L979.9316 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-833.5386,-2.4238)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M979.9316 12.4621 L1277.3346 12.4621 L1277.3346 102.4621 L979.9316 102.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1016.0496" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">AffineLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,138.8627,162.494)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath4)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACoklEQVR42u3ZW0tU URjH4TnrTHmYPGFG5tgBwyTNDEwzy+z0/b9P74JXmJsu2uNFrHn+8Fy6BWH/WHvZ apmZmZmZmZmZmZnZf7s2MJfuNSKd0E09YK50swEzx6WdD+uHhTAMI2BulHd+Md// 3lRYGp9MBvnglfAorIcNoHrlXV8L47CUcelnFxoFpZcxKQ/cDrthEp4D1dsPe+Fp 2AqrGZVuk1PK3elkOWNSfsFhOA6nQPVOwtvwOsOyGR7mKeWfg9LNb6dxnkxKTM7C RfgMVO9T+JhxOQg7efUxaBqUYX5DTbJWl+EmfAeq9y18CefhKA8W47ygbRyU9fzc Oc1qlV/0G6jez4zKZX76PMt/zAgKICiAoACCIiiAoACCAgiKPzQIiqAAggIICiAo ggIICiAogKAAgiIogKAAggIIiqAAggIICiAogKAICiAogKAAgiIoICiCAggKICiA oAgKICiAoACCIiggKIICCAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAA giIoICiCAggKICiAoAgKICiAoACCIiggKIICCAogKICgCAogKICgAILiDw2CIiiA oACCAgiKoACCAggKICiAoAgKICiAoACC8pegXIXb8Auo3o9wEy7uMyhrYRKOs1Rf 85QC1K2cTq7DeTgKu2E8S1AW8wHlQW/Ch4zKNVC9qzydvA8H4UlYDYMmQelkiZbD 4/AiK/UunAHVK9ccJ+Ew7IetsBT6TYLSzh8c5XfTTtjLsLwCqvcy70/LF8p2nk7K NUiv1WDt/Owpx5sH+bByQbuZpQLqVt71jbxHXcnDRT+/XlqzRKWf9ynDjAswH0b5 3i9MxaTdmmHt1Mm4dPPIA9Tv7p3vTLXAzMzMzMzMzMzMzMzMqtofzWxJgOHf0bsAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1277.3346 12.4621 L1575.2334 12.4621 L1575.2334 102.4621 L1277.3346 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-1089.0257,-2.4238)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1277.3346 12.4621 L1575.2334 12.4621 L1575.2334 102.4621 L1277.3346 102.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1303.4657" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">SigmoidLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,16.518,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath5)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157 02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522 txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4 Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA 2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77 f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C YII=" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M979.9316 102.4621 L1209.9316 102.4621 L1209.9316 192.4621 L979.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-971.9316,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M979.9316 102.4621 L1209.9316 102.4621 L1209.9316 192.4621 L979.9316 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1013.0527" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">RNNLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(4.8217,0,0,4.8217,-27.0395,64.4089)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath6)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAbCAYAAAC9UXAYAAABwElEQVR42u3cSU8C QRiEYfYdVBSFuOJu1KioGI0oGkX8/3/I6qRIODPjpXkrea49p6/S3TOQyRBCCCGE EEIIIYQQQgghhJC4kwWwtFIvk7wUrAhgKcxmPpdWseS8YFmqUpeGNAFEq2F1z33J m4ps0p1JKJOKH9KWjnQBRG/L8952uZSTlkrOzdT0wntyJGdyDiBqp573XdlwqRTd Cwsl7+1O22VyIXcylCcAUXuQW5fLjqz6tLJwoRR8huq4qUKZvMhYPgFE60Pe5dml cuhdStUbjYULpeGzVDjmPLpMJjIFEK0f+XKphJ3KiWxKLY1C6bpQhm6u8LBfANGa euMw9kYitUKpe6Gw4L2M3FzhYd8AojPxjIejz6sMfOXRSaNQaj479eXau5TwkDcA 0Rr5vnToud/3y5lEdyh53+qG291tOZYrX9IMAEQrvIC5kUvPfU9W/C3Kwm95cn7v XHc79fz6uO9bXwBxCjN+4G9Qwh3qmk8rhSQfts1+w1PyYi0vHMplHUDU2j6dtDz/ iT5qmy+V2e95St7yVHyWqgCIzvxslz33qf5AcL5YACyXf/kLA0IIIYQQQgghhBBC CCEJ8weQglGCn84JNwAAAABJRU5ErkJggg==" height="27" preserveAspectRatio="none"/> + <path fill="rgb(197,174,155)" d="M981.1957 -119.7321 L3964.9678 -119.7321 L3964.9678 -29.7321 L981.1957 -29.7321 Z" clip-path="url(#clipPath2)" transform="matrix(0.0858,0,0,0.0858,-74.3492,20.1003)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M981.1957 -119.7321 L3964.9678 -119.7321 L3964.9678 -29.7321 L981.1957 -29.7321 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="2400.8357" xml:space="preserve" y="-60.8844" clip-path="url(#clipPath2)" stroke="none">Matrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.587,0,0,2.587,-4.6923,40.3461)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath7)" width="275" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAiCAYAAAB8+D0EAAAB5klEQVR42u3cV0sD QRiF4SS7JlFjLDHG3rEX7A1bFI36//+PZ+AIInqzu4iM74EHvHFzNYdvlpktlQgh hBBCCCGEEEIIIYQQQkgcKQP4twotkkRS6wPwL6Re+5UiSqXiB9akXwalIUMAotWw sN7rUnWplPNMJKkfFn5gTNoyCSB6Ha/3UZdK1cNF5qmk6iIJD52XFVmXDQBRW5Nl mZGWDHi4yDSdJN7ajLlINuVATuUMQNSOZd+lMi3NPNNJ6vGm7YkkFMml3EkXQLTu 5UbOZVcWvN2p5SmThvdPYWtz4iJ5lhcA0erJo1x7iFj2VqdeRJlsePTp+sfeAETr VZ7kVo68MxmnTAAUUSZMJgAoEwCUCQDKhDIBKBPKBMBfLpPON+dMegCiVvg5k3AC dkJW5VCuPJ2EH3oAEJ2PtR2mkgvZk0Vfq8lcJokv97R8nHbb5/UvXCqXAKLzsbbP PJWEVxyzMpznOH3if276vcmSH7zj8/oA4hTW+JYv+S34fl545RE+mJTp1nDF/xxu Do94uxNuD84BiF749MCUj9E3vcXJ/IGk8qdCqbuZmh53RgBELazzIb83rZVyfMvk a6EkLpWq1T79DSAeX9d2Wsr5ycafigUAX6cnhBBCCCGEEEIIIYQQ8lt5B3gESCra G5I2AAAAAElFTkSuQmCC" height="34" preserveAspectRatio="none"/> + <path fill="rgb(197,174,155)" d="M981.1957 -231.9262 L2581.1958 -231.9262 L2581.1958 -141.9262 L981.1957 -141.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1599,0,0,0.1599,-147.2131,46.7652)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M981.1957 -231.9262 L2581.1958 -231.9262 L2581.1958 -141.9262 L981.1957 -141.9262 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1684.8677" xml:space="preserve" y="-173.0786" clip-path="url(#clipPath2)" stroke="none">CuMatrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.587,0,0,2.587,-4.6923,-5.1564)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath8)" width="275" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAAAiCAYAAAB8+D0EAAAB5klEQVR42u3cV0sD QRiF4SS7JlFjLDHG3rEX7A1bFI36//+PZ+AIInqzu4iM74EHvHFzNYdvlpktlQgh hBBCCCGEEEIIIYQQQkgcKQP4twotkkRS6wPwL6Re+5UiSqXiB9akXwalIUMAotWw sN7rUnWplPNMJKkfFn5gTNoyCSB6Ha/3UZdK1cNF5qmk6iIJD52XFVmXDQBRW5Nl mZGWDHi4yDSdJN7ajLlINuVATuUMQNSOZd+lMi3NPNNJ6vGm7YkkFMml3EkXQLTu 5UbOZVcWvN2p5SmThvdPYWtz4iJ5lhcA0erJo1x7iFj2VqdeRJlsePTp+sfeAETr VZ7kVo68MxmnTAAUUSZMJgAoEwCUCQDKhDIBKBPKBMBfLpPON+dMegCiVvg5k3AC dkJW5VCuPJ2EH3oAEJ2PtR2mkgvZk0Vfq8lcJokv97R8nHbb5/UvXCqXAKLzsbbP PJWEVxyzMpznOH3if276vcmSH7zj8/oA4hTW+JYv+S34fl545RE+mJTp1nDF/xxu Do94uxNuD84BiF749MCUj9E3vcXJ/IGk8qdCqbuZmh53RgBELazzIb83rZVyfMvk a6EkLpWq1T79DSAeX9d2Wsr5ycafigUAX6cnhBBCCCGEEEIIIYQQ8lt5B3gESCra G5I2AAAAAElFTkSuQmCC" height="34" preserveAspectRatio="none"/> + <path fill="rgb(197,174,155)" d="M981.1957 -341.9262 L2581.1958 -341.9262 L2581.1958 -251.9262 L981.1957 -251.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1599,0,0,0.1599,-147.2131,64.3542)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M981.1957 -341.9262 L2581.1958 -341.9262 L2581.1958 -251.9262 L981.1957 -251.9262 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1552.4165" xml:space="preserve" y="-283.0786" clip-path="url(#clipPath2)" stroke="none">CUDA (cuBLAS, etc.)</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.771,0,0,1.771,395.9205,277.0341)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath9)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAApCAYAAAD049a+AAACG0lEQVR42u3dW08T URTF8WlLsZQCsYCtSFBES0sQuVqVi3KRVv3+38e10zWhL7x0Jj6c/lfyez3z1JV9 JumeLCOEEEIIIYQQQgghhBBCCCFpp2JVAHOjMqW0IomDa7IgdVkEMBfq/t3XyiiV vEzi0IY0pSWrAJK34t/7ksulcKlU3U5x4JpsSEe2ACTvtbyStovlhUtl5umk5kOi TLryVnoykAMASduXPdmWdVn2baUya6Es+JoTk8k7P+RMhvINQLK+yoV89hCx5cFi sUih1D3qdHzoqVzJrdwDSNad3LhYPvl28tI3lkKFsuJ2GngyiTIZyW8AyRrLg1zL iez62tPwu9XChXLgtrr3A/8CSNYfeZQffs2xR6EAKFooN37V8X6qUCoUCgAKBQCF AoBCoVAAUCgAKBQAFAqFAlAoFAoACgUAhQKAQqFQAPy3//LE35rHfiCANMXQ8OuZ CaVwocQquL58kZ9urhGApMVt5FKOs8n6gnYZV558wdLHbLIX4btL5RZA0q49RBzK TlbCgqV8BWSMOrGxaeBSiYcMASQrfuPncuRhIm4psQl/5hWQkXxJ9aqnlGipD9lk eW0fQNJ6fnfyxkNF00PGzIWSTykNl0ocGmv1u24sAGnqeojY9FVn2dNJNSuY/Ns8 Maks+eAWgLnQ9EBRyoe+pieV6c+RApgftezpO8eEEEIIIYQQQgghhBBCCCEkufwD ih9Il5wb8J0AAAAASUVORK5CYII=" height="41" preserveAspectRatio="none"/> + <path fill="rgb(124,157,124)" d="M1929.9316 320.5293 L3024.9622 320.5293 L3024.9622 410.5293 L1929.9316 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.2336,0,0,0.2336,-441.2541,-65.3353)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1929.9316 320.5293 L3024.9622 320.5293 L3024.9622 410.5293 L1929.9316 410.5293 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2369.0779" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">ParamRepo</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.7417,0,0,0.7417,13.7608,287.327)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath10)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABGCAYAAAANQWsxAAACfElEQVR42u3Ya0sV URiG4X1wHzyfsiytMDPR1M6ZlpWlmfb//0/vwLtBhAJnz6fl9cBFfpoNwdysNa2W mZmZmZmZmZmZmZmZlbt26qQucCeM3vlRAxqJSfXgXuiHQRgCxRuk6r2fuBaWsWNS PXQqzIaFsAgUr3rX5/O9n8ywdOtGZRST6iEzYTmshvXwBCje47AWHmRgpvKm0qkb lIl8yFKG5HnYDQdA8fbCTtgMj/LEMsyDxq3XydPJbJ5MtsKrcBg+hy9Asap3/Ch8 CPthI6yE6Txo1ArKIO9Q63ky+Ri+hbNwDhSresd/hJPwLmznwWJm3KAs5H2qqtRx /tBluAKKVb3jF+E0byW7ee2ZbSooB3kMOs8f/AMU7XeeUj7dCEpPUIDbuPpPUJxQ AEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFD8h4OgCAogKICgAIIi KCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIICCAog KICgCAogKICgAIIiKCAoggLU96+g9AQFaOqE0khQ9sNxOMsfugSKdhFOw2HYaerK Mx/Ww8t88Pc8pfzKf4GyjN7tn+EkvA/bYTXMjBOUfhbpYXgR3oSj/JGvQLFO8hPH YX7u2Az3w3TdoLTzrlQ94F54mpU6yLC8BYpVveOvw17YylvKYpgM3bpB6ea1Zy6s hLUMyzOgeBv5/bT6drKc151+3l5adaNSHW+G+bDqe8pSPhwo21KeSubypjLIQ0a7 NcY6+ZBePnCYJq/9DZTj5rvdz/d/7JhcP6m0My7A3dNuKiZmZmZmZmZmZmZm1tD+ ApjkFTe7x4XtAAAAAElFTkSuQmCC" height="70" preserveAspectRatio="none"/> + <path fill="rgb(124,157,124)" d="M981.1957 320.5293 L1439.9316 320.5293 L1439.9316 410.5293 L981.1957 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.5577,0,0,0.5577,-538.3619,-169.8856)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M981.1957 320.5293 L1439.9316 320.5293 L1439.9316 410.5293 L981.1957 410.5293 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1126.2766" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">Network</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(4.8185,0,0,4.8185,-27.5301,292.019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath11)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAbCAYAAAC9UXAYAAABvUlEQVR42u3cSU8C QRiEYZZhQBaD4IK7uJu4o5gYMGrA5f//IauTIvFs46V5K3muzGkqXy9DoUAIIYQQ QgghhBBCCCGEEELSThHAwpp7mZQlswqAhZD53S/Nq1hK/tGqLElDmtICkKymhfe9 JrmLpRg7mWT+wfCQjqxJD0DyNmRV2i6W3ANG1HSSu0xCkezJkZzJOYCkncqhbEtX 6h4w/jyllL3M6bhMLuROhvIEIGkPci0nsiXLsVNK5lFnzZNJKJNneZV3AMl6kxcX y6Xsy4r3UqMKpem1VFjmPLpMPuQLQLI+ZSIjufXSp+v91OhC6blQhm6u8LBvAMkK pTKVsVcmcyuUsORZ9zpq4AdMPKVMASRp4uEhbHHcSN97qdGFUvfRUfjBK08pI6+v AKRp7DIZ+DBm18fHUXsoZTdS20dHx96gCWuqewDJuvMJz4WHiQ1fH8ljjo1Lvn7b 8Liz6ePjvtdUANIU3vED2XGZtH2FJOoeyuwbntxLn2UfHXW8QQMgXR0XSctlUom9 KTsrldn3PLnXUDU/oAYgaVW/91lhjh8I/i4WAIvlX/7CgBBCCCGEEEIIIYQQQkhk fgBaMVEFlE4tmAAAAABJRU5ErkJggg==" height="27" preserveAspectRatio="none"/> + <path fill="rgb(197,155,155)" d="M979.9316 430.4265 L3961.0647 430.4265 L3961.0647 520.4265 L979.9316 520.4265 Z" clip-path="url(#clipPath2)" transform="matrix(0.0858,0,0,0.0858,-74.2973,-27.1231)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,78,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,78,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M979.9316 430.4265 L3961.0647 430.4265 L3961.0647 520.4265 L979.9316 520.4265 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="2350.0879" xml:space="preserve" y="489.2742" clip-path="url(#clipPath2)" stroke="none">Schedulers</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.7562,0,0,0.7562,870.1543,242.0789)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath12)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABFCAYAAACL1RmfAAACeElEQVR42u3Ya0tU URiG4Tk4B8+nLEsrzEw0tXOmZWVppv3//9O74B0QocCZ+bS8HrjIT3sg2Ddr7UbD zMzMzMzMzMzMzMzM6l0ztVIbuBMG7/ygAWOJSXlwJ3RDL/SB6vVSee8nroVl5JiU h06F2bAQFoHqlXd9Pt/7yQxLe9ioDGJSHjITlsNqWA9PgOo9DmvhQQZmKm8qrWGD MpEPWcqQPA+74QCo3l7YCZvhUZ5Y+nnQuPVaeTqZzZPJVngVDsPn8AWoVnnHj8KH sB82wkqYzoPGUEHp5R1qPU8mH8O3cBbOgWqVd/xHOAnvwnYeLGZGDcpC3qdKpY7z hy7DFVCt8o5fhNO8lezmtWd2XEE5yGPQef7gH6Bqv/OU8ulGUDqCAtzG1X+C4oQC CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAguI/HARFUABBAQQFEBRB AUERFEBQAEEBBEVQAEEBBAUQFEEBQREUQFAAQQEERVAAQQEEBRAUQQFBERRAUABB AQRFUABBAQQFEBRBgTvoX0HpCAowrhPKWIKyH47DWf7QJVC1i3AaDsPOuK4882E9 vMwHf89Tyq/8F6jL4N3+GU7C+7AdVsPMKEHpZpEehhfhTTjKH/kKVOskP3Ec5ueO zXA/TA8blGbelcoD7oWnWamDDMtboFrlHX8d9sJW3lIWw2RoDxuUdl575sJKWMuw PAOqt5HfT8u3k+W87nTz9tIYNirleNPPh5XvKUv5cKBuS3kqmcubSi8PGc3GCGvl Qzr5wH6avPY3UI+b73Y33/+RY3L9pNLMuAB3T3NcMTEzMzMzMzMzMzOzMe0vkxjJ 8NMUUIYAAAAASUVORK5CYII=" height="69" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M3051.8381 211.4957 L3519.5107 211.4957 L3519.5107 301.4957 L3051.8381 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.547,0,0,0.547,-1660.4756,-106.784)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3051.8381 211.4957 L3519.5107 211.4957 L3519.5107 301.4957 L3051.8381 301.4957 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3177.3052" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">FrmBuffer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.677,0,0,0.677,1075.5202,242.8707)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath13)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABLCAYAAACx33jvAAACeUlEQVR42u3YW08T URiG0U5baLGcAxFBwFM0IqcoQRGIIIqC////+O3k44ZELzq90M16k3XJNCGZJ3tP p2NmZmZmZmZmZmZmZmb1rgnd1AMelLt3v5lUSMpDp8IgDMMMUL1hms73v9c2KiUm /XzobFgIS2EZqF551xfDfHiUYRk7Kk3+8TAfuBrWw1Z4BlRvO2yGtQzMKKPSHTco U/mQlXz4m7AbDsIhULX9sBNehY08sQzzoDHWdWeQ15z1jMn78CmchXOgWuUd/xyO Mywv8pYyys8gYwVlmFUq15y9cBIuwvdwDVSrvONXGZejPFCs5bfUVkFZzvvUYVbr W7gJt0C1yjv+I1zmrWQnbypz+SlkIkE5z3KVH/wFVO1n+CooQFu3fwlKX1AAQQEE BRAUQQEEBRAUQFAEBQRFUABBAQQFEBRBAQQFEBRAUPzTQVAEBRAUQFAAQREUEBRB AQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAE BRAUQFAAQREUEBRBAQQFEBRAUAQFEBRAUID/wZ+CMiUowKROKK2Dsh0Owmm4yh+6 AapV3vHrcBGOw9tJXXmWwmbYDR/Dl4zKN6Ba5R2/DGfhQ3gd1sJsm6AMwnx4kg88 zKicAtU7CUdhLzwPq2E0blCavCuVB6yErYzKu7APVG8vrzov87qzmLeW3rhB6eUp ZS6jUk4qTzMu20DVyqeOjfA4P32M8pDR7Yy5Jo83g3zYfFZqCaheedcX8kAxE6bz kNF0WuzupNLPBw6AB2M6TyX9PJm0isn9sNzpAtVr7jEzMzMzMzMzMzOzf2m/AQMh iUbPbvbSAAAAAElFTkSuQmCC" height="75" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M3546.3867 211.4957 L3964.9678 211.4957 L3964.9678 301.4957 L3546.3867 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.611,0,0,0.611,-2157.988,-120.4413)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3546.3867 211.4957 L3964.9678 211.4957 L3964.9678 301.4957 L3546.3867 301.4957 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3647.3081" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">SeqBuffer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4801,0,0,1.4801,862.0243,279.9001)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath14)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACI0lEQVR42u3dXU8T QRQG4G3LUq1QjQooatQgImDiF35gNH5gBPX//x/PpGcTwoWJ3V6Q6fMmz2V3kyb7 5sxczDSNiIiIiIiIiIiIiIiI1J1BGgJLY3DOwoqkPHgUVkIbVoGl0OZ3P1pEqXRl Uh56JUzCWpgC1VvP77189+Msll6lMsyHXA3Xw+2wFbaB6t0Nm+Fmlsu4z6QyyB+P s0zuhIfhadgPB0DV9sKT8CCHibVcrcxdKCs57pSHPcqXvAnvwzFQrQ/hbXiZxXI/ 3MgBYzhvobTZSls5mbwOn8K3cAJU63v4ksXyIgeKW7mX2qtQ1nM9tZ+TSSmT0/AL qNZZ+BE+56pkJ2zkfupoEYVykG11ki/8A1Trdw4OX8NR2M0N2olCAeYplJ+57DnK zdluQhkqFEChAAoFUCgKBVAogEIBFIpCAYWiUACFAigUQKEoFEChAAoFUCj+dFAo CgX4/0LZzUKZKBTgUk0o5Tj9cgTku2Z2BGR50RlQrdMcHsoRkOUs6Z1FFYpDqsEh 1Y+b2SHVvQrl4jUah83swNryko9AtY5zRfIqPGsWdI1GOYy2HJvfXfRVWmovi+U5 UK3D3OYom7Hlgr/NXK2sNj2uI+3uNZ5kO23kfsq9bCygXts5SJQVyjSHi173G1+8 LP1abtJOc2oB6tVdmH7+svRh0zNdqYzygW2OPUD92vzuR30mk3+VC7B8RERERERE REREROSy5S88n4l7HvW/KAAAAABJRU5ErkJggg==" height="45" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M3049.6843 320.4265 L3964.9678 320.4265 L3964.9678 410.4265 L3049.6843 410.4265 Z" clip-path="url(#clipPath2)" transform="matrix(0.2795,0,0,0.2795,-842.8725,-80.1105)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3049.6843 320.4265 L3964.9678 320.4265 L3964.9678 410.4265 L3049.6843 410.4265 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="3386.916" xml:space="preserve" y="379.2742" clip-path="url(#clipPath2)" stroke="none">DataBuffer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.5445,0,0,0.5445,871.3801,153.5906)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath15)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABZCAYAAAD/wdt/AAACf0lEQVR42u3Y205T URSG0Xb3QFutLUXAA2o9REUFFdFEFE0Jnt//fZw7mU24dRcTsjr+ZFyySUjWl7Vo tczMzMzMzMzMzMzsSq8NrJX/EpAqdIC1VF1GXJYh6YZ+GIRhGAHFG6ZBnv/uKmFZ xqSXHx2HaZiFm0DxtvK8T/P8D7IHVdOgdDMm9Qd3w16Yh0fAWpjnud8Jk4xKp0lQ qrzmjDMmD8N+eB2OgOK9DYd57uuwbIfreUv552dPJ2s0zUK9CMfhJHwBincaPoZ3 4Xm4m7eUftOgDPMNNc+bSR2Ts/AdKN63sMioHIT7YTNsrBKUrXxLHWW16l/0Byje r4xKfVN5kxeLmaAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoPhj g6AICiAogKAAgiIogKAAggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiA oAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAICgiKoACC AggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAAVywop/kLfgPF +xnOw+fLDMosP1R/8FM4Cz+A4tWXh0U4CYfhQdhcJSiD/MC98DK8z1otgOJ9zfNe n/v9sBemod8kKFWW6Ea4FZ6Eg3z6fACKd5zn/VV4HHbDOPSaBKWdPzjKW8qdfPrU YXkGFO9pnvf6qXM7byf1v0G6rQZr57Onn1GZ5D9od7JUQNnqs76d536SHejl66W1 SlR6+fwZ5kevAWthlOd+40JM2q0V1k5VxqWTVx6gfMszX11ogZmZmZmZmZmZmZmZ mRW1v0UvlxiiABziAAAAAElFTkSuQmCC" height="89" preserveAspectRatio="none"/> + <path fill="rgb(125,144,144)" d="M3049.6843 -7.5379 L3386.6655 -7.5379 L3386.6655 82.4621 L3049.6843 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.7596,0,0,0.7596,-2308.1934,14.2068)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3049.6843 -7.5379 L3386.6655 -7.5379 L3386.6655 82.4621 L3049.6843 82.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3126.061" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">HTKReader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4815,0,0,0.4815,1011.4054,154.2208)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath16)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABiCAYAAACRfCwRAAACoklEQVR42u3ZW0tU URjH4TnrTHmYPGFG5tgBwyTNDEwzy+z0/b9P74JXmJsu2uNFrHn+8Fy6BWH/WHvZ apmZmZmZmZmZmZnZf7s2MJfuNSKd0E09YK50swEzx6WdD+uHhTAMI2BulHd+Md// 3lRYGp9MBvnglfAorIcNoHrlXV8L47CUcelnFxoFpZcxKQ/cDrthEp4D1dsPe+Fp 2AqrGZVuk1PK3elkOWNSfsFhOA6nQPVOwtvwOsOyGR7mKeWfg9LNb6dxnkxKTM7C RfgMVO9T+JhxOQg7efUxaBqUYX5DTbJWl+EmfAeq9y18CefhKA8W47ygbRyU9fzc Oc1qlV/0G6jez4zKZX76PMt/zAgKICiAoACCIiiAoACCAgiKPzQIiqAAggIICiAo ggIICiAogKAAgiIogKAAggIIiqAAggIICiAogKAICiAogKAAgiIoICiCAggKICiA oAgKICiAoACCIiggKIICCAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAA giIoICiCAggKICiAoAgKICiAoACCIiggKIICCAogKICgCAogKICgAILiDw2CIiiA oACCAgiKoACCAggKICiAoAgKICiAoACC8pegXIXb8Auo3o9wEy7uMyhrYRKOs1Rf 85QC1K2cTq7DeTgKu2E8S1AW8wHlQW/Ch4zKNVC9qzydvA8H4UlYDYMmQelkiZbD 4/AiK/UunAHVK9ccJ+Ew7IetsBT6TYLSzh8c5XfTTtjLsLwCqvcy70/LF8p2nk7K NUiv1WDt/Owpx5sH+bByQbuZpQLqVt71jbxHXcnDRT+/XlqzRKWf9ynDjAswH0b5 3i9MxaTdmmHt1Mm4dPPIA9Tv7p3vTLXAzMzMzMzMzMzMzMzMqtofzWxJgOHf0bsAAAAASUVORK5CYII=" height="98" preserveAspectRatio="none"/> + <path fill="rgb(125,144,144)" d="M3386.6655 -7.5379 L3684.5642 -7.5379 L3684.5642 82.4621 L3386.6655 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.8591,0,0,0.8591,-2901.0683,14.7574)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3386.6655 -7.5379 L3684.5642 -7.5379 L3684.5642 82.4621 L3386.6655 82.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3423.0312" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">KaldiReader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4541,0,0,0.4541,1134.9085,154.4955)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath17)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABmCAYAAAAK7W4HAAACnElEQVR42u3YW08T ARSFUaYgpXKzUImgqIARL0QBQU0E8RY0+v//j3uSw5svtn0g07WT9domTebLmc7N mZmZmZmZmZmZmdmtXQPMnKlHpBfzZQGYGTfPfW8acWnqw+5EPwZxF5gZ7TO/FIvV gmbSy2SxPng9NmIU94HOG9Uzfy9W6qgYOypNnTxtTIaxHU9iP54BnXcQT+NhxWW1 DozeOEG5uU7WKibtFxzFSZwBnXcab+IwdutaGdSh8d+br3enYV0mbUzex0V8ATrv Mj7GcR0UW7Fc/6mOFZS2Rpv1mnNaX/AjfgKd1z7rV3EeL+pNZXXSoIyqTmdVrfaL /gCd9yu+1ZXyKnYEBRAUQFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQRF UEBQBAUQFEBQAEERFEBQAEEBBMWPDYIiKICgAIICCIqgAIICCAogKICgCAogKICg AIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIIC CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgK ICiAoACCIiggKIICCAogKICgCAogKICgAIICCIqgALciKO/iKq7jN9B57fHwNT7E y2kFZTP24yQuqljXQOd9j8t6OzmM7ViZJChLMYzH8TrO41N8Bjrvoq6Tt3EQW7Ec C+MEpReLsRYP6gPbqBzHKdB57bN+FM/jUWzUW8v8OEFpqkSDulLaqOzGXsUF6La9 ejvZqb8+VurI6M2NuV69Lw3qUhnWB4+AztusZ369XnX6dZ004walqagsVJn69b/K AOi8pdKvw2KimPwrLMBsaqYVEzMzMzMzMzMzMzOb0v4CR+mmNCZOfVgAAAAASUVO RK5CYII=" height="102" preserveAspectRatio="none"/> + <path fill="rgb(125,144,144)" d="M3684.5642 -7.5379 L3964.9678 -7.5379 L3964.9678 82.4621 L3684.5642 82.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.911,0,0,0.911,-3348.5781,15.0452)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3684.5642 -7.5379 L3964.9678 -7.5379 L3964.9678 82.4621 L3684.5642 82.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3794.0615" xml:space="preserve" y="49.2326" clip-path="url(#clipPath2)" stroke="none">...</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4801,0,0,1.4801,862.0243,189.7372)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath18)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACI0lEQVR42u3dXU8T QRQG4G3LUq1QjQooatQgImDiF35gNH5gBPX//x/PpGcTwoWJ3V6Q6fMmz2V3kyb7 5sxczDSNiIiIiIiIiIiIiIiI1J1BGgJLY3DOwoqkPHgUVkIbVoGl0OZ3P1pEqXRl Uh56JUzCWpgC1VvP77189+Msll6lMsyHXA3Xw+2wFbaB6t0Nm+Fmlsu4z6QyyB+P s0zuhIfhadgPB0DV9sKT8CCHibVcrcxdKCs57pSHPcqXvAnvwzFQrQ/hbXiZxXI/ 3MgBYzhvobTZSls5mbwOn8K3cAJU63v4ksXyIgeKW7mX2qtQ1nM9tZ+TSSmT0/AL qNZZ+BE+56pkJ2zkfupoEYVykG11ki/8A1Trdw4OX8NR2M0N2olCAeYplJ+57DnK zdluQhkqFEChAAoFUCgKBVAogEIBFIpCAYWiUACFAigUQKEoFEChAAoFUCj+dFAo CgX4/0LZzUKZKBTgUk0o5Tj9cgTku2Z2BGR50RlQrdMcHsoRkOUs6Z1FFYpDqsEh 1Y+b2SHVvQrl4jUah83swNryko9AtY5zRfIqPGsWdI1GOYy2HJvfXfRVWmovi+U5 UK3D3OYom7Hlgr/NXK2sNj2uI+3uNZ5kO23kfsq9bCygXts5SJQVyjSHi173G1+8 LP1abtJOc2oB6tVdmH7+svRh0zNdqYzygW2OPUD92vzuR30mk3+VC7B8RERERERE REREROSy5S88n4l7HvW/KAAAAABJRU5ErkJggg==" height="45" preserveAspectRatio="none"/> + <path fill="rgb(125,144,144)" d="M3049.6843 102.4621 L3964.9678 102.4621 L3964.9678 192.4621 L3049.6843 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.2795,0,0,0.2795,-842.8725,-19.1946)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(93,118,118)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(93,118,118)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M3049.6843 102.4621 L3964.9678 102.4621 L3964.9678 192.4621 L3049.6843 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3386.916" xml:space="preserve" y="161.3097" clip-path="url(#clipPath2)" stroke="none">DataReader</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.4882,0,0,1.4882,5.7726,235.1589)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath19)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAtCAYAAABvcpSoAAACKElEQVR42u3dWU8U QRQG0J4NYViMuDCicUORIe4bbqCACur//z/eCneSefFleh5IzfmS81qddNJfbvVD VdOIiIiIiIiIiIiIiIhI3emkLrAwOlPmViRl4V7oh0FYAhbCIL/73jxKZVImZdHl MAxrYQOo3np+7ytZLq1LpZvtVBa8Gm6ErbANVO92uBU2s1iuZKnMPJ30cpFSJqNw P+yGcdgHqvY07IS74XpYzd1KZ9ZC6ec2p0wmD/Ihb8NB+ARU62N4H17mELGdg8VS m0IZ5KizlYu+CV/DcTgFqnUSjrJYnufu5FruWFoVynq20zgnk1ImZ+E3UK3z8CMc htfhYW57lvPfautC2c+2Os0H/gWq9Sf8Ct/yN8eOQgHaFspR/up4NFUoHYUCKBRA oQAKRaEACgVQKIBCUSigUBQKoFAAhQIoFIUCKBRAoQAKxUsHhaJQgEt0Hko5Gu48 HwjUqQwNP/8zobQulHKc/l74EL5nc50BVSu7kS/hVXNxBOTmPLY8k0OqnzQXZ0t+ zlI5Bqp2mEPEs3CvmcMh1ZNrNMqoU069HmeplIccANUq3/i78CKHibJLKbcJznyN Rsnkoq+NnFJKSz1uLi4A2gOqtpv/Tu7kUDHMIWPmQplMKctZKmXRcjXhKBsLqNMo h4ibudVZzemk27TM5H7jMqms5MJrwEIY5kAxl8vSpyeVbi7YBxZKL7//uZSJiIiI iIiIiIiIiIiIXLb8A1tLdKp5rdSaAAAAAElFTkSuQmCC" height="45" preserveAspectRatio="none"/> + <path fill="rgb(124,157,124)" d="M979.9316 212.4621 L1899.9316 212.4621 L1899.9316 302.4621 L979.9316 302.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.278,0,0,0.278,-262.9365,-49.6116)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M979.9316 212.4621 L1899.9316 212.4621 L1899.9316 302.4621 L979.9316 302.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1379.7266" xml:space="preserve" y="271.3098" clip-path="url(#clipPath2)" stroke="none">Layer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(1.2054,0,0,1.2054,401.576,237.5869)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath20)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAzCAYAAABWrvdDAAACSElEQVR42u3dS09T URQG0Htb6UNaCBIEUSIxiI1gjI+Kj/hGBP3//8d90s3M0W1Hp+tLVhj13NH9sk+b sJtGRERERERERERERERE6k2besBaaldZJuXAO2EjDMIQWAuDfO/7qyiWNg8qh47D JGyFbWAtTMNmGGWx9JYplF6WSTlwJ9wPh+ERUL2H4UHYy3IZ502lXWY6GWeZlCJ5 EmbhLJwDVXseTsNx2M/bybDrlNLmiDPJyaSUyYswDx/CR6Ba5R2/CK+zWB6H3Rww +l0LZZCtdJiTSSmTL+FHuASq9TN8C5/Cq3CSg8XdZQtlO+9TZ9la5UG/ww1Qretw laUyz6vPQX6fupJCOc9R6DIf+Beo1p8cHL7n1WeWhTLJL2YVCtCpUN6FZyYUQKEA CgVQKAoFUCiAQgEUikIBhaJQAIUCKBRAoSgUQKEACgVQKAoFFIpCARQKoFAAhaJQ AIUCKBRAoSgUWO9CWel/vS97ea7zgUCdytBwu5dn5RNKWZpc1hFeZGP9yvYC6nSV w0PZFPomPG0W+42XLpRps9jAXjaHlT2nZTXh1ywWoE5lMvkc3oeXzWK3+V6z5CrS jWykctBxTillz+k8xyCgXm+zTMp15yjcC6OuhdLkB0d57SnjTtnAfpIPmOVfoC63 7/ZpTiZHOVRM89bS61oovZxSxmEr7DaLDewHQPX2s0h2skxG+QtP27VQ2iyVcsgw i6VcgSbAWtjM936QPdB5OvlfsfTzUGB99PP9bxsRERERERERERERERGpMP8A4QU/ 7cvJhS8AAAAASUVORK5CYII=" height="51" preserveAspectRatio="none"/> + <path fill="rgb(124,157,124)" d="M1929.9316 211.4957 L2675.6604 211.4957 L2675.6604 301.4957 L1929.9316 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.3432,0,0,0.3432,-652.9685,-63.2639)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1929.9316 211.4957 L2675.6604 211.4957 L2675.6604 301.4957 L1929.9316 301.4957 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2242.5908" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">Param</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.69,0,0,0.69,217.8799,287.8441)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath21)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABKCAYAAAB6g6tKAAACbklEQVR42u3YXUsU YRzGYdd1ddNNzazMl6ywJPMNK0vLsCwt+/7fp3vg70lQB7sGMl43XIfOgjA/nmfG xszMzMzMzMzMzMzMzKy968R46QK3ytW737mukDQP7cVU9OMO0Hr9Mlnvf3fUqDQx maiHDmIu7sUC0HrNuz4fszFdYRk6Kp3643498EEsx5N4CrTeeqzFUgVmpqIyPmxQ evWQxXr4ZmzHXuwDrbYbW7ERK3Vi6ddBY6jrzlRdc5YrJgfxIT7FCdBazTt+HIcV lud1S5mpzyBDBaVfVWquOTtxFKfxPc6B1mre8bOKy9s6UCzVt9SRgrJQ96n9qta3 +BmXQGs17/hFfKlbyVbdVO7Wp5BrCcpJlav5wV9Aq/2Ir4ICjOryH0GZEBRAUABB AQRFUABBAQQFEBRBAUERFEBQAEEBBEVQAEEBBAUQFP90EBRBAQQFEBRAUAQFBEVQ AEEBBAUQFEEBBAUQFEBQBAUERVAAQQEEBRAUQQEEBRAUQFAEBQRFUABBAQQFEBRB AQQFEBRAUAQFBEVQAEEBBAUQFEEBBAX4j/4WlJ6gADfmhLIeu/ExzuKifgxor/M4 jcN4FY9HDcpUzMdavI738bmqdQa02pc6RBzEy1iKwShBmYzZKtOL2It3cRTHQKs1 V503sR3PYjGmoztMUDr18WUm7sdqbNTRp/mBHaC1tutWslkxaQ4Vc/UZZOigdOva M6hvKY9ipa5AQLutVkge1qeP6TpkdMaG3FVUJuthg7oCzQG3wmy99/2KyfgoQbmK ynh9iOlVXIDbo1cHi5Fj8mdYgNvJzMzMzMzMzMzMzG7afgNW+jP+1a3MLwAAAABJ RU5ErkJggg==" height="74" preserveAspectRatio="none"/> + <path fill="rgb(124,157,124)" d="M1473.3939 320.5293 L1899.9316 320.5293 L1899.9316 410.5293 L1473.3939 410.5293 Z" clip-path="url(#clipPath2)" transform="matrix(0.5995,0,0,0.5995,-874.5453,-183.3665)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(63,99,63)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(63,99,63)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1473.3939 320.5293 L1899.9316 320.5293 L1899.9316 410.5293 L1473.3939 410.5293 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="1578.2937" xml:space="preserve" y="379.3769" clip-path="url(#clipPath2)" stroke="none">LayerRepo</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,111.6595,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath22)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157 02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522 txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4 Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA 2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77 f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C YII=" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1209.9316 102.4621 L1439.9316 102.4621 L1439.9316 192.4621 L1209.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1201.9316,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1209.9316 102.4621 L1439.9316 102.4621 L1439.9316 192.4621 L1209.9316 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1232.8179" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">LSTMLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.5235,0,0,0.5235,727.5685,244.4058)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath23)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABbCAYAAACyCXp0AAAChUlEQVR42u3YW0tU URjH4dl7ZnQmFeeEg9JhTDoYhWaGYVZ0srDv/316N7wXXdjNnilqzfOH50ZwCcL8 WGs6HTMzMzMzMzMzMzP7p1cBa+OPBaQOXWDt1KlaRUyag3phIwzCMNwBijfMz/xm 6GdcqmVj0s+Dd8IoTMIMKN40jMNu2MqwtI5KlTeTYYZkHu6GRXgIFO8w3A8HGZft fKnUbYJS5y/vZEyaw4/DSTgDincanodHeZkY5wWj2yYo3Xw/jfKwZ+E8XIb3QPGu wkVeIo7CXj59em2DMszvTBZ5aBOTT+EaKN6XDMvr8DTs54ulv0xQpvmeOsvDmz/0 Ayje97xAvMkXyoGgAIICCAogKIICCAogKICgCAoIiqAAggIICiAoggIICiAogKAI CgiKoACCAggKICiCAggKICiAoPhng6AICiAogKAAgiIogKAAggIICiAoggIICiAo gKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIICCAogKICgCAoIiqAA ggIICiAoggIICiAogKAICgiKoACCAggKICiCAggKICiAoAgKCIqgAIICCAogKIIC /K2gvAzvwtdwAxTvW/gYLsLxqoIyCYtwEi7zD1wDxfucr5Lz8CTsLxuUQRiFe3nl aQ5+Gz4AxbvK20lzmTgKe2Er9NoEpQ4bWaR5PnuaqJyGV0Dxmq85XoTHeamY5Kul 2yYoVZZomLeUeR56mLUCytZcIh7kdyezsJ2XjLrTcnW+l4Z5Uxnnl7QzoHjTvJXs 5lNnM28nVdugVBmVXpZpkHEB1sMgQ9JfNia3heVX3Vt+Bvzfur/5bFeriomZmZmZ mZmZmZmZrWg/AVdcYBs8tdqVAAAAAElFTkSuQmCC" height="91" preserveAspectRatio="none"/> + <path fill="rgb(93,118,118)" d="M2701.5188 211.4957 L3024.9622 211.4957 L3024.9622 301.4957 L2701.5188 301.4957 Z" clip-path="url(#clipPath2)" transform="matrix(0.7901,0,0,0.7901,-2126.1136,-158.6879)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(47,74,74)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(47,74,74)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2701.5188 211.4957 L3024.9622 211.4957 L3024.9622 301.4957 L2701.5188 301.4957 Z" clip-path="url(#clipPath2)"/> + </g> + <g stroke-linecap="butt" font-size="40px" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="white" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke="white" stroke-miterlimit="1.45"> + <text x="2754.8713" xml:space="preserve" y="270.3434" clip-path="url(#clipPath2)" stroke="none">ChunkFile</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.1976,0,0,2.1976,671.2145,-1.2622)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath24)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAlCAYAAACDIRbFAAACCElEQVR42u3dV08C QRiFYRAQAUssAUvsiiVqjIot9obl//8fz8SzCde7e/X5nuS5ZPaKk28m7FCpEEII IYQQQgghhBBCCCGEkNip2hiAf6M6orQiSQvXpC4NGQfwLzT8va+VUSpZmaRFJ6Qt kzINILwpf99bLpfCpTLmdkoLzsiC9GQZQHhL0pU5F0vTpZJ7Oql5kVQmi7IufTmQ QwCh7cm2rHqY6Hi3Us1bKHVvc9JiG37IuVzJDYCwrmUgpy6WFQ8W49655CqUhked nieTM7mTZ3kFENaLPLhYTrw7mfVZaqFCmfJ+6sCTSSqToXwBCOtT3uTeg8SWzJdZ KIduq1c/8AdAWN/yIY8+5tj20UeLQgFQRqEwoQCgUABQKAAoFAoFAIUCgEIBQKFQ KAC/Qym7UF78K7pvAGGloeHdP78vfUJJrzHv+2WhJz9oCCCsDw8Pd35BcLPyd41B 4ULp+OXAHS986zHoGUBYTy6TSzmSNb8c2CxSKNnlSvNecN+lcuEHAYhp4JcCj2XX u5R0i1vu6wsq/mDT2550c1O6aCW9dZiuMtgDEFbfu5INn6Gm7U7bQ0buayCzKWXC pTLrk96ut0EA4up6dzLjo49C08nolFL3YtlF1R0A4bV95NH0eWopN99nk0r2VxrZ 32kAiC37vo/+Pw8hhBBCCCGEEEIIIYQQQggJl19qwBeexA1HvAAAAABJRU5ErkJg gg==" height="37" preserveAspectRatio="none"/> + <path fill="rgb(197,174,155)" d="M2605.7544 -341.9262 L3964.9678 -341.9262 L3964.9678 -251.9262 L2605.7544 -251.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1882,0,0,0.1882,-480.8714,73.9861)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2605.7544 -341.9262 L3964.9678 -341.9262 L3964.9678 -251.9262 L2605.7544 -251.9262 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3237.197" xml:space="preserve" y="-283.0786" clip-path="url(#clipPath2)" stroke="none">BLAS</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(2.1976,0,0,2.1976,671.2145,44.2403)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath25)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAAAlCAYAAACDIRbFAAACCElEQVR42u3dV08C QRiFYRAQAUssAUvsiiVqjIot9obl//8fz8SzCde7e/X5nuS5ZPaKk28m7FCpEEII IYQQQgghhBBCCCGEkNip2hiAf6M6orQiSQvXpC4NGQfwLzT8va+VUSpZmaRFJ6Qt kzINILwpf99bLpfCpTLmdkoLzsiC9GQZQHhL0pU5F0vTpZJ7Oql5kVQmi7IufTmQ QwCh7cm2rHqY6Hi3Us1bKHVvc9JiG37IuVzJDYCwrmUgpy6WFQ8W49655CqUhked nieTM7mTZ3kFENaLPLhYTrw7mfVZaqFCmfJ+6sCTSSqToXwBCOtT3uTeg8SWzJdZ KIduq1c/8AdAWN/yIY8+5tj20UeLQgFQRqEwoQCgUABQKAAoFAoFAIUCgEIBQKFQ KAC/Qym7UF78K7pvAGGloeHdP78vfUJJrzHv+2WhJz9oCCCsDw8Pd35BcLPyd41B 4ULp+OXAHS986zHoGUBYTy6TSzmSNb8c2CxSKNnlSvNecN+lcuEHAYhp4JcCj2XX u5R0i1vu6wsq/mDT2550c1O6aCW9dZiuMtgDEFbfu5INn6Gm7U7bQ0buayCzKWXC pTLrk96ut0EA4up6dzLjo49C08nolFL3YtlF1R0A4bV95NH0eWopN99nk0r2VxrZ 32kAiC37vo/+Pw8hhBBCCCGEEEIIIYQQQggJl19qwBeexA1HvAAAAABJRU5ErkJg gg==" height="37" preserveAspectRatio="none"/> + <path fill="rgb(197,174,155)" d="M2605.7544 -231.9262 L3964.9678 -231.9262 L3964.9678 -141.9262 L2605.7544 -141.9262 Z" clip-path="url(#clipPath2)" transform="matrix(0.1882,0,0,0.1882,-480.8714,53.2802)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,99,78)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,99,78)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2605.7544 -231.9262 L3964.9678 -231.9262 L3964.9678 -141.9262 L2605.7544 -141.9262 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="40px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="3201.074" xml:space="preserve" y="-173.0786" clip-path="url(#clipPath2)" stroke="none">MMatrix</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4541,0,0,0.4541,262.3658,162.7686)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath26)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABmCAYAAAAK7W4HAAACnElEQVR42u3YW08T ARSFUaYgpXKzUImgqIARL0QBQU0E8RY0+v//j3uSw5svtn0g07WT9domTebLmc7N mZmZmZmZmZmZmdmtXQPMnKlHpBfzZQGYGTfPfW8acWnqw+5EPwZxF5gZ7TO/FIvV gmbSy2SxPng9NmIU94HOG9Uzfy9W6qgYOypNnTxtTIaxHU9iP54BnXcQT+NhxWW1 DozeOEG5uU7WKibtFxzFSZwBnXcab+IwdutaGdSh8d+br3enYV0mbUzex0V8ATrv Mj7GcR0UW7Fc/6mOFZS2Rpv1mnNaX/AjfgKd1z7rV3EeL+pNZXXSoIyqTmdVrfaL /gCd9yu+1ZXyKnYEBRAUQFAAQREUQFAAQQEERVBAUAQFEBRAUABBERRAUABBAQRF UEBQBAUQFEBQAEERFEBQAEEBBMWPDYIiKICgAIICCIqgAIICCAogKICgCAogKICg AIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgKICiAoACCIiggKIIC CAogKICgCAogKICgAIIiKCAoggIICiAogKAICiAogKAAgiIoICiCAggKICiAoAgK ICiAoACCIiggKIICCAogKICgCAogKICgAIICCIqgALciKO/iKq7jN9B57fHwNT7E y2kFZTP24yQuqljXQOd9j8t6OzmM7ViZJChLMYzH8TrO41N8Bjrvoq6Tt3EQW7Ec C+MEpReLsRYP6gPbqBzHKdB57bN+FM/jUWzUW8v8OEFpqkSDulLaqOzGXsUF6La9 ejvZqb8+VurI6M2NuV69Lw3qUhnWB4+AztusZ369XnX6dZ004walqagsVJn69b/K AOi8pdKvw2KimPwrLMBsaqYVEzMzMzMzMzMzMzOb0v4CR+mmNCZOfVgAAAAASUVO RK5CYII=" height="102" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1575.2334 12.4621 L1855.637 12.4621 L1855.637 102.4621 L1575.2334 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.911,0,0,0.911,-1426.9102,-3.1754)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1575.2334 12.4621 L1855.637 12.4621 L1855.637 102.4621 L1575.2334 102.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1684.7306" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">...</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,206.801,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath27)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157 02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522 txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4 Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA 2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77 f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C YII=" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1439.9316 102.4621 L1669.9316 102.4621 L1669.9316 192.4621 L1439.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1431.9316,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1439.9316 102.4621 L1669.9316 102.4621 L1669.9316 192.4621 L1439.9316 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1462.8179" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">ConvLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,301.9424,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath28)" width="251" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPsAAABvCAYAAAAqhbbzAAACmUlEQVR42u3Y205T URSG0R4oPSUWoWAEk4q0eiMYi6AmamtE8fD+78NcybwwXu42WTUZfzIuWSQk3157 02qZmZmZmZmZmZnZf7E2sJO2GnkndMMesFO62Wd7G6GXw/bDIIzCGNgJo+yyl522 txF6OfggTMNJeAJUUxo8DkfZ5Tg77TaNvZNPjHEe+iych0V4CVQ1zx7PwmHe8r2m t3uJvZ9PjnLgq/AmvAu3QDU34Tpc5eV7GibZa6dJ7OWVYJi3+nmG/jGswlegmnX4 Ej6EyzDL232wSeyj/DZY5I1eQv8efgLV3Ie7DH4ZLvL/acNNYz/Jb4TbfKqUX/YH qOZ3Br/OS3gudhC72EHsYgexix3EDogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA 2AGxA2IHxA5iFzuIXewgdrGD2MUOYgfEDogdEDsgdkDsIHaxg9jFDmIXO4jdHxvE DogdEDsgdkDsIHaxg9jFDmIXO4hd7CB2QOyA2AGxA2IHxA5iFzuIXewgdrGD2MUO YgfEDogdEDsgdhC72EHsYgexix3ELnYQOyB2QOyA2AGxA2IHsYsdxC52ELvYQexi B7EDYgfEDogdEDuIXewgdrGD2MUOYhc7iB0QOyB2YOdjv8nD7/OXAXX8Cj/CKlxv M/bjPKwc+jncZfBAHSX0b+FTeBtehKNNYx/mIc/DVXifwa+BalYZevm0fh1m4XEY NI29/FA/HISzfJW/DMv8TgDqWWaP5a37aXgU9pvG3g69MM7b/TRv+IuwAKqZZ4ez DP0wP7n3sttGsXfzaVGCn+Sh0/yOB+qZZo+TDL3X9Fb/N/hevtIP8jt+BFQ1zB77 f4Xebm24duqkLrATOtuK3MzMzMzMzMzMzMzMtrEHVAdrqUAHNrEAAAAASUVORK5C YII=" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1669.9316 102.4621 L1899.9316 102.4621 L1899.9316 192.4621 L1669.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1661.9316,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1669.9316 102.4621 L1899.9316 102.4621 L1899.9316 192.4621 L1669.9316 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1682.583" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">GraphLayer</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,409.4937,163.1726)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath29)" width="273" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAABvCAYAAADLy/SLAAACtklEQVR42u3YXUvU QRjGYXdXXV2NLF9CzcjMtKA3M6sD06Iw6vt/n56BO+i03e1kvG64Tv8LwvyYcWHB zMzMzMzMzMzMzP7bBsCtMtd4DMuoLAK3wijnfjCPgLSPLZeVMilrQNcmOe/LCcpw HgFpH94oW2WnPAC6tJNzfq/cSUwWp72RtPosJSCb5WE5LMflGdCldr6flIOynZCM c6GYKiLj3ED2y0l5Xc7LBdCl85zz0/IoF4hJbiP/vFae1XzkMB/+VK7KF6BLVznn b3MraU+c9bxKporIJFea4xSq/cD38gPoUjvf17mVPC+7edLMFJGdvJUuUqr2Q7+A LrXz/bV8LC/KnogAIgKICCAiIgIiIiKAiAAiAogIICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiPhjg4iICCAi gIgAIgKIiIgAIgKICCAigIiICIiIiAAiAogIICIiAiIiIoCIACICiIiIgIiICCAi gIgAtyoi78t1uSk/gS7d5LLwYZ4R2S5Py7tyWb7lh4D+tPP9OZeG07I7a0RWy2Z5 XF6lTpe5kQD9ucxT5k0uD+0lsjZtRIZlXDbKfp40L8tZOQe6dJYLw0k5KPdzmVic JiKD1Gctt5G93EiOyjHQpaOc8/38K6M9ZZZzqZgqIqN8oIXkbqq0lY8D/dnKpaG9 QNbzGhmlBwuzhGQpH1vJ1WYCdGk1xjn3MwXk75AMcp0Z5qNAv/6c9cE8AmJmZmZm ZmZmZmZmZmbz3G/y1MZz2tRJsgAAAABJRU5ErkJggg==" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1929.9316 12.4621 L2182.3081 12.4621 L2182.3081 102.4621 L1929.9316 102.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1921.9316,-4.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1929.9316 12.4621 L2182.3081 12.4621 L2182.3081 102.4621 L1929.9316 102.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="2025.4153" xml:space="preserve" y="69.2326" clip-path="url(#clipPath2)" stroke="none">...</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,409.4937,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath30)" width="273" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAREAAABvCAYAAADLy/SLAAACtklEQVR42u3YXUvU QRjGYXdXXV2NLF9CzcjMtKA3M6sD06Iw6vt/n56BO+i03e1kvG64Tv8LwvyYcWHB zMzMzMzMzMzMzP7bBsCtMtd4DMuoLAK3wijnfjCPgLSPLZeVMilrQNcmOe/LCcpw HgFpH94oW2WnPAC6tJNzfq/cSUwWp72RtPosJSCb5WE5LMflGdCldr6flIOynZCM c6GYKiLj3ED2y0l5Xc7LBdCl85zz0/IoF4hJbiP/vFae1XzkMB/+VK7KF6BLVznn b3MraU+c9bxKporIJFea4xSq/cD38gPoUjvf17mVPC+7edLMFJGdvJUuUqr2Q7+A LrXz/bV8LC/KnogAIgKICCAiIgIiIiKAiAAiAogIICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiAAiIiKAiAAi AogIICIiAiIiIoCIACICiIiIgIiICCAigIgAIiIiICIiAogIICKAiPhjg4iICCAi gIgAIgKIiIgAIgKICCAigIiICIiIiAAiAogIICIiAiIiIoCIACICiIiIgIiICCAi gIgAtyoi78t1uSk/gS7d5LLwYZ4R2S5Py7tyWb7lh4D+tPP9OZeG07I7a0RWy2Z5 XF6lTpe5kQD9ucxT5k0uD+0lsjZtRIZlXDbKfp40L8tZOQe6dJYLw0k5KPdzmVic JiKD1Gctt5G93EiOyjHQpaOc8/38K6M9ZZZzqZgqIqN8oIXkbqq0lY8D/dnKpaG9 QNbzGhmlBwuzhGQpH1vJ1WYCdGk1xjn3MwXk75AMcp0Z5qNAv/6c9cE8AmJmZmZm ZmZmZmZmZmbz3G/y1MZz2tRJsgAAAABJRU5ErkJggg==" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M1929.9316 102.4621 L2182.3081 102.4621 L2182.3081 192.4621 L1929.9316 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-1921.9316,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M1929.9316 102.4621 L2182.3081 102.4621 L2182.3081 192.4621 L1929.9316 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="1943.5364" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">MatrixParam</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4137,0,0,0.4137,513.8913,200.4019)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath31)" width="248" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPgAAABvCAYAAADBsg3wAAACnUlEQVR42u3YW0tU URzGYWcmHR0FNU+RBlaa3ZThKYJMIzvZ9/8+/Te8grftGZZFzwvPpUsQfnstnJsz MzMzMzMzMzOzZhsAf42Zhj0so/IIeHCjNDmYRdzdYQtlsUzKMvBgJmlx4V7oU8fd HbxWNst22QGa6rrbSoNdiytlnEZ73eTdl2E+cW+UvfK8HJZXQHMHaXAvoa/kAh72 DXycr8VuOSrH5axcAE2dl9M0+Lo8K+tlKbf4H2+UH97IV6M7+EO5Kp+Bpq7LpzT4 rrzMk305/3jrFfgkhxzm5u7i/lp+AE19Lzdp8Dwv6p0806cKfDvv/4t8Sbpf9gto 6jaRdw2+zzP9icBB4AIHgQscBA4IHBA4IHAQuMBB4AIHgQMCBwQOCBwELnAQuMBB 4AIHgQMCBwQOCBwELnAQuMBB4AIHgQMCBwQOAhc4CFzgIHCBg8ABgQMCBwQOAhc4 CFzgIHCBg8ABgQMCBwQOAhc4CFzgIHBA4IDAAYGDwAUOAhc4CFzgIHBA4IDAAYGD wAUOAhc4CFzgIHBA4IDAAYGDwAUOAhc4CBwQOCBwQOAgcIGDwAUOAhc4CBwQOCBw QOAgcIGDwAUOAvcHB4EDAgcEDgIXOAhc4CBwgYPAgX8+8PNynV9yCzT1s3xLgxez DHyrHJTTclluEjnQThf3lzR4lkt3Z9rAl8pG2S9v8zS4zFcEaOeqfEyDx+VFLt9J 38CHZVzWym6+GG/KSb4gQFsnafCo7JX1XMKjPoEPynxZzi3+NDf5y3IINHWQ9vZz 4W7meb6Qy7hX4KMc0EW+Wh7n4C2guc00uJomx2l0MNdzd5HP57DFPAkmQHNLaXCc JqeK+37kgzwDhjkUeBh3HQ5mEbeZmZmZmZmZmZmZ2f+735liIOkO4cZZAAAAAElF TkSuQmCC" height="111" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M2182.3081 102.4621 L2409.585 102.4621 L2409.585 192.4621 L2182.3081 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(1,0,0,1,-2174.3081,-94.4621)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2182.3081 102.4621 L2409.585 102.4621 L2409.585 192.4621 L2182.3081 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="2203.8328" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">BiasParam</text> + </g> + <g text-rendering="geometricPrecision" shape-rendering="geometricPrecision" transform="matrix(0.4282,0,0,0.4282,607.761,200.2565)" image-rendering="optimizeQuality"> + <image x="0" y="0" clip-path="url(#clipPath32)" width="276" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARQAAABrCAYAAAC2c33ZAAACuUlEQVR42u3YaUtU cRjGYWfGZUzRctRKbTFbpKzQzLDNorLt+3+f7j88QfTOGYM4c91wvfQMCPPjOTMz Y2ZmZmZmZmZmZmb/5XrA1LrUkPRjELPA1BlUAyaOS68eNh/DuBJLwNRo3/nFWKi4 9MeNyp8xaQ++GuuxGdeBztus7/xarFRY5ioqF16//rjFZBQ7sRsP4iHQee27vhe3 40as1pvKYJwrpV9nTrtMtuNRPI/jOAE6r33XD+NxHRPtYlmuQ+PCQRnUiTOqh7WY nMZZfAQ6r33X38SL2I+tevWZHzco7QeZjTp9jusDvsQ3oPPOKyztkDiIW/XGMlFQ Nut96qQe3j7oJ9B53+NzXSnP6rcUQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQFEBRA UAQFEBRAUABB8Y8GQREUQFAAQQEERVAAQQEEBRAUQFAEBRAUQFAAQREUEBRBAQQF EBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAUQQEEBRAUQFAEBRAU QFAAQREUEBRBAQQFEBRAUAQFEBRAUABBERQQFEEBBAUQFEBQBAUQFEBQAEERFBAU QQEEBRAUQFAEBRAUQFAAQfHPBkERFEBQAEEBBEVQAEEBBAUQFEBQBAUQFEBQAEER FBAUQQEEBZiqoLyMD/E1fgCd146HT/E6nl5WUDbifhzFu/qAc6Dz2nVyFq/iSezE 6iRBWYxR3K1Ctdeet/Ee6Lx2QJzGYb2l3IyVmBsnKP1YqCJt1ZVyUA8/AjrvsH47 2Y87sR5LMTtOUHpVovbas1Z1au9Qu7EHdN69Csl2/fSxUkfGYGaM9epKma+otIdd q1egdaDzRnVMtLeU5RiOe538HZXZCsuwflcBpsOwrpK5ukz6M5ew32EBplNvksvE zMzMzMzMzMzMzP7BfgEYpjHHFTBcQAAAAABJRU5ErkJggg==" height="107" preserveAspectRatio="none"/> + <path fill="rgb(169,192,169)" d="M2409.585 102.4621 L2674.2024 102.4621 L2674.2024 192.4621 L2409.585 192.4621 Z" clip-path="url(#clipPath2)" transform="matrix(0.966,0,0,0.966,-2319.6821,-90.9143)" stroke="none" image-rendering="auto"/> + </g> + <g stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" fill="rgb(124,157,124)" text-rendering="geometricPrecision" shape-rendering="geometricPrecision" stroke="rgb(124,157,124)" stroke-width="2" stroke-miterlimit="1.45"> + <path fill="none" d="M2409.585 102.4621 L2674.2024 102.4621 L2674.2024 192.4621 L2409.585 192.4621 Z" clip-path="url(#clipPath2)"/> + </g> + <g font-size="34px" stroke-linecap="butt" transform="matrix(0.4137,0,0,0.4137,-385.5298,161.3268)" text-rendering="geometricPrecision" font-family="'Menlo'" shape-rendering="geometricPrecision" stroke-miterlimit="1.45"> + <text x="2429.3103" xml:space="preserve" y="159.2326" clip-path="url(#clipPath2)" stroke="none">WindowParam</text> + </g> + </g> +</svg> diff --git a/nerv/doc/source/overview.rst b/nerv/doc/source/overview.rst index ccdd2ef..f28be89 100644 --- a/nerv/doc/source/overview.rst +++ b/nerv/doc/source/overview.rst @@ -5,13 +5,13 @@ What is NERV? ------------- NERV is a general-purpose deep learning toolkit designed to be be simple, -lightweight and extensible. The name "NERV" comes from the German word "nerv" -for "nerve" in English. It is also a fictional organization in the *Neon -Genesis Evangelion*, a famous anime. +lightweight, extensible and complete. The name "NERV" comes from the German +word "nerv" for "nerve" in English. It is also a fictional organization in the +*Neon Genesis Evangelion*, a famous anime. -Why NERV? ---------- +Introduction and Philosophy +--------------------------- In recent years, the invention and prevalence of the deep neural network (DNN) and related deep learning techniques have given rise to many tools and toolkits @@ -26,8 +26,10 @@ of neural network model and provides with peripheral facilities dedicated to one specific task, such as image classification or phone state prediction. Not only the network model is hard-coded into the very core of the tool, but some modifications or tricks that are only specific to a certain task are wired into -the code. The effect of this approach is two-fold. On the one hand, they have a -complete and tightly designed system that appears to provide with a simple user +the code. + +The effect of this approach is two-fold. On the one hand, they have a complete +and tightly designed system that appears to provide with a simple user interface. Thus, researchers who are familiar with that specific area can use it easily. Also, because the network is hard-coded and task-specific, the implementation could be easy and optimization could be effective so that offers @@ -37,13 +39,14 @@ flexibility. People need to hack the code and make modifications to suit the tool to another structure of neural network model, and it is very difficult and tricky to use the tool designed for one specific area (for example, image classification) in another area (like speech recognition). Engineering details -and implementation tricks refrain people from doing so. Caffee, which is -designed for computer vision, has a comprehensive variety of tools for -processing images and training convolution neural networks (CNN). But it cannot -be directly applied to speech processing tasks. Luckily, there is Kaldi, a -counterpart in speech processing that can process wave-form files, extract the -acoustic features, train GMM-HMM models, fully-connected DNN models, LSTM -models and so on. +and implementation tricks refrain people from doing so. + +Caffee, which is designed for computer vision, has a comprehensive variety of +tools for processing images and training convolution neural networks (CNN). But +it cannot be directly applied to speech processing tasks. Luckily, there is +Kaldi, a counterpart in speech processing that can process wave-form files, +extract the acoustic features, train GMM-HMM models, fully-connected DNN +models, LSTM models and so on. The second category strives to be general-purpose. As mentioned above, there are two types of generalities: @@ -56,7 +59,7 @@ by the toolkit. Besides, general-purpose toolkits usually have a unified interface for data input and output (I/O) which is the most task-specific part. Therefore, the task-specific implementation details are limited to separated I/O modules as possible. This concept of design also presents in -operating systems where device-specific code are modularized and isolated from +operating systems where device-specific code is modularized and isolated from the core part and several abstraction layers are often used. Therefore, by this approach, general-purpose toolkits usually can be potentially adapted to various kinds of tasks without hacking or changing core code. Admittedly, the @@ -116,12 +119,181 @@ because people no longer work together at all but tend to write their own scripts with duplicate functionalities. So there will be less and less common code base among users' scripts. -- simplicity: the learning curve is not steep and code are straight forward +CNTK, developed by Microsoft Research, is an attempt to address these problems. +It is a complete solution having the advantages of task-specific tools, but +also support various kinds of neural networks via introducing a scripting +language called NDL (now it is moving to a new language, BrainScript). It can +be adapted to different tasks from speech processing to computer vision. +Nevertheless, CNTK does not satisfy all researchers. Due to its highly coupled +design, which is the opposite choice made by Torch, researchers find it extremely +hard to add new functionalities. Unfortunately, this need always exists as the +brand new network structures or components being proposed. Extensibility is a +real problem for CNTK. Also, without being a general-purpose programming +language, the custom scripting language seems to have limited power of +expression. To increase the power, more syntax or semantics need to be +introduced and thus makes the learning curve even longer. + +Finally, we propose NERV, a simple but effective deep learning toolkit that +tries to address the issues above. It is designed with the following +characteristics in mind: + +- simplicity: the learning curve is not steep and code is straight forward + - extensibility: users can quickly become developers and add the missing modules or tailor the toolkit for their needs; major building blocks in NERV are modularized and the interfaces are standardized so that users can plug-in their additionally implemented ones and even use the modules implemented by others + - lightweight: NERV strives to stay at minimal core code base and dependencies, which makes it fairly easy to embed it into other task-specific tools, such - as Kaldi (in speech-processing). + as Kaldi (in speech-processing) + +- completeness: at the same time, NERV provides with a complete pipeline of + training and managing a neural network + +Abstraction +----------- + +NERV has a decoupled design, like Torch. It also uses Lua as its main scripting +language. Lua is extensively used in video game industry because of its short +learning curve and the tiny footprint of the interpreter/compiler. LuaJIT is a +just-in-time compiler for Lua providing with very high efficiency. Therefore, +our design strives to confine those performance demanding parts (such as matrix +operation, low-level I/O) into pure C/C++ modules, and by giving them Lua +interface, the rest of the project fully stands upon pure Lua, to avoid letting +users coding in C/C++. + +To achieve the goal to be decoupled but complete, NERV uses a bottom-up style +of development and has several levels of abstraction. The following figure +depicts such abstraction from low (at the top of the figure) to high (at the +bottom of the figure) level. + +.. image:: _static/nerv-hierarchy.svg + +As shown in the figure, the brown boxes are implemented in pure C. Some part of +the classes (such as ``HTKReader``, ``KaldiReader``) inheriting from ``DataReader`` +and some part of ``ChunkFile`` (defines the standard storage format) are also +implemented in C/C++. Except for these, others are all written in pure Lua. + +This hierarchical design is the solution to the previous mentioned conflict +between extensibility and completeness. People who are merely interested in +using current functionalities do not have to write much code in order to have a +running example. They only need to invoke the ``Scheduler`` and provides with a +Lua script having declarative information of the model to be trained, the data +to be used and the training policy, which are task-specific. The rest, +non-task-specific jobs, are accomplished by corresponding components/modules in NERV. +When a research wants to have more control of the training process, she may +write a custom trainer inherits from the general trainer or even write her own +trainer, and that is the whole story. When she needs even more control or try +to hack an exotic model that temporarily does not fit into the current +pipeline, she may try to build her own script using lower level components. In +short, hierarchical design gives people choices and is expected to satisfy +different user requirements. The following subsections briefly introduce major +categories of components in NERV. + +Matrix +****** + +This part corresponds to the brown boxes in the figure. Matrices are the basic +data container for computation. Although in NERV, matrices are not assumed to +be the only type of data container, the current available subclass of +``nerv.Param`` is ``nerv.MatrixParam`` (other classes such as +``nerv.BiasParam`` are currently aliases of ``nerv.MatrixParam``), meaning +parameters stored by matrices are sufficient for most tasks. The base class for +all matrices is ``nerv.Matrix``, which defines the common behavior of a matrix +regardless its type of value (float or double) or storage location (on host or +on device). Inheriting from that, there are two major groups of matrix types: +``nerv.MMatrix`` and ``nerv.CuMatrix``. As the name suggests, ``nerv.MMatrix`` +defines the matrices in the main memory (on host), whereas ``nerv.CuMatrix`` +defines those in the GPU memory (on device) using CUDA as programming interface +(there may be some class like ``nerv.CLMatrix`` in the future, to support other +programming interface for GPU). Then for each storage category, there are +subclass implementing matrices with different types of values: + +- ``nerv.MMatrixFloat`` +- ``nerv.MMatrixDouble`` +- ``nerv.CuMatrixFloat`` +- ``nerv.CuMatrixDouble`` + +Layer +***** + +A layer (``nerv.Layer``) in NERV conceptually represents a computation node +which declaratively defines the computation logic needed to produce the output +from the input. This means a layer itself is "oblivious" in a sense that its +computation is time-invariant (except that some layers maintain some auditing +information, which do not change the behavior of the output though) when +hyper-parameters are fixed. This concept is important in understanding the +relationship between layers and parameters in NERV and is not quite so in other +toolkits. In some toolkits, a layer or a computation node stands for the +computation logic together with the contained parameters. This coupled design +causes inconvenience in network model management when users want to manipulate +or duplicate the parameters and also makes parameter tying (different layer +share the same group of parameters) difficult to implement. In NERV, layers are +abstract concept that defines the *structure* of a neural network, whereas the +parameters defines the *state* of the neural network. + +Layers have two categories: *graph layers* and *primitive layers*. The former +are a special kind of layer that acts like a container for a set of sub-level +layers by specifying both the temporal and structural connections between these +sub-level layers in the layer configuration of the containing graph layer. The +latter, primitive layers, are the layers that define basic computation without +any sub-level structures. Graph layers can be nested to introduce a complex +hierarchy, but the final contained layers must be primitive. + +Network +******* + +Layers alone only declare the structure and behavior of the intended network. +To turn a layer into a trainable model, we need to *compile* the layer into an +*network* instance (``nerv.Network``). What compilation does is to flatten out +the nested graph layer according to the specified structure and allocate the +space for those intermediate activations between the layers. Although the +internal implementation of a network is flatten out and may lose nested +structures, it is designed to be opaque to users, which means users should not +bother much about the compiled network where many technical tricks are applied, +but should access the state of computation or change the hyper-parameters to +alter the behavior of the network via layer abstraction (the instances of +subclasses of ``nerv.Layer``) where the structures are preserved. + +Parameter +********* + +Parameters (``nerv.Param``) represents the state of layers (``nerv.Layer``) in +NERV. They are time-variant during training because of the update. They can be +read from files (in NERV ``nerv.ChunkFile`` format) and written to files. Take +an fully-connected linear layer in a neural network as an example, the layer +defines the calculation of :math:`y = W x + b`, where x is the input, whereas +the parameters W and b provide with the state of the layer. The association +between layers and parameters is called *binding*. For a layer like :math:`y_1 += W x_1 + b`, when it is bound to parameter :math:`W_1` and :math:`b_1`, the +calculation becomes :math:`y_1 = W_1 x_1 + b_1`. However, when a network need +to rollback to a previous state, the layer may bind to parameter :math:`W_0` +and :math:`b_0`, so becomes :math:`y_1 = W_0 x_1 + b_0`. The concept of binding +decouples the layer and the corresponding parameters in a clear way. + +Buffer +****** + +Buffers (``nerv.DataBuffer``), as the name suggests, connect I/O ends with +different speed (granularity). Buffers in NERV accept variable length of +samples (frames) from readers (``nerv.DataReader``) and produce a regularized +sequence of data to feed as the input to a network (``nerv.Network``). This +process is often called "mini-batching" which roughly means to stack the +samples together and cut samples into mini-batches. + +Scheduler (Trainer) +******************* +Schedulers refer to those top-level scripts that implements the main training +loop and ticks the training process. A general-purpose scheduler typically +takes in a Lua script written by an end user that contains description of the +network, task-specific processing for reading data and some hyper-parameters. +Then, according to these metadata, it instantiates the major components that +make up the training pipeline and build up the pipeline by connecting them +according to their interface. Schedulers are user-friendly and thought to be +the main tool used by the end user. The end user could also change the behavior +of the scheduler by overriding functions in their Lua script read by the +scheduler. Experienced users can also directly write their own schedulers to +train exotic neural networks that temporarily does not fit into the current +pipeline. |