Pipelines A Tenzir pipeline is a chain of operators that represents a dataflow.
Operators are the atomic building blocks that produce, transform, or consume
data. Think of them as UNIX or Powershell commands where output from one command
is input to the next:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1a2VLbSlx1MDAxMH3nKyjf1+DMrlHesNmSsFx1MDAwNVx1MDAwM1x03EpRQlx1MDAxYduKZUmRxnih8u93JFx1MDAxM21ekI2dmLr4XHUwMDAxrNm6p6e7z+mRXHUwMDFmt7a3K3Loi8qH7YpcdTAwMTiYhmNbgdGvvIvaXHUwMDFmRFx1MDAxMNqeq7pQ/Fx1MDAxY3q9wIxHtqX0w1x1MDAwZu/fXHUwMDFivl9NZ1VNrzueKVx1MDAxY9FcdTAwMTWuXGbV2H/V8/b2Y/w3IytcdTAwMTCmNNyWI+JcdHFXKlx1MDAwZfNi46nnxpJcdNYo5YzDZIBcdTAwMWTuKWlSWKq3aTihSHuipsrP+0+6vPl8cH5hWFx1MDAxN7d1p0nuXHUwMDFhvVRo03achlx1MDAxYzrjbVx1MDAxOWa7XHUwMDE3ZFRcbmXgdcRX25Jt1Vx1MDAwZlx1MDAwYu3JvNBTXHUwMDA2SGdcdTAwMDVer9V2RVx1MDAxOObmeL5h2nJcdTAwMTi1XHUwMDAxkLSObfBhO21cdTAwMTmop53skGhcbs48j4XXPcdcdTAwMGJcIuH/gPiTir83zE5L6eBa6Vx1MDAxOFNYxDLSMf3fW8qs21x1MDAxNnarLVUjy8hcdTAwMTKxYTFEnGCeXHUwMDE5XHUwMDFjXHTwP1rxXHR/z+7ctZ527vZcdTAwMWMn1Snq2C96RdYzMkc20IenuF87tq29bz/anea56bgo0T3nRkZcdTAwMTB4/UrS8+vd9HV/XHUwMDBml2Ig81x1MDAwYo0l3lx1MDAxY9dcdTAwMDPeXHUwMDBlr+nxV+/w28nNcMh3QWbZp2/pRnu+ZYx9XHUwMDBlMo1cdTAwMTGic8KRjpJ+x3Y7RVx1MDAxYjie2UnddCuj7+NWXHRtknWmbmbsNpxVad5vXHUwMDEwmDhzXHJPXHUwMDFlOZrnkatwuEXiXGbNijPLk5HRl1xutFx1MDAwNVx1MDAxZPbJ8SHEQENcdTAwMDTQ1KxpmoLarDTFdUwgXCJamTRVXGaNnFx1MDAxYS/3s9RtXCJ3UUY880VgSHVM6dl4rmzYI1x1MDAxMUvJtVx1MDAxZVx1MDAxOF3bXHUwMDE55qxcdTAwMWIts+vYrchcdTAwMDBcdTAwMTVT6SyCXFxcbpe2goNkQNe2rGyOvzdCoXSORZGk1VSiXGbVXHUwMDFhfCyTsr3Abtmu4VxcXHUwMDE2NzQ1pEpcdTAwMDGOhmadJCTK7pxcdTAwMDJa4iTH0WtcdTAwMWacXHUwMDFhXHUwMDA33/YvdyRcdTAwMDadU3NcdTAwMTBe3dWvN1x1MDAxZHAg2ii80TjEXHUwMDA0IJa6yOvCm/G6WoA+9a1a6LGjg3t0PFx1MDAxYfG9XHUwMDFke604dvdwcX3V87VTRzO/XGb2mu2bm/blX8Ox6dqUwDGI8Vx1MDAxYo6tXHUwMDE2xzDFXHUwMDFh01G6elx1MDAwNsYmXHUwMDFhk+RcdTAwMDexTlx1MDAwMVx1MDAwNKmh32DsyVNKwNgzQLBcdTAwMWOMjVx1MDAxM8WUU1R2nVk0Ma5hXStcdTAwMGZh81x1MDAxM+KGQlx1MDAxOKqiQs7Aa8IwSDPZKUk9XHUwMDEzIKbKJVx1MDAwNWJcdTAwMTSsXHUwMDBlxOblbUpcdTAwMTlly1x1MDAwNFQojUDWbNey3ZbqTPHmd1x1MDAxNV+GlEWbM/zCKcTRZ/ZcItXBU1NcdTAwMDJsXHUwMDE14VrPXHUwMDBinVx1MDAxZkKLXHUwMDBidYxQ1r1u147y77lnu3JcIl9G1tiNgqwtXGar2KuUzvZVZGBcdTAwMTc4pVx1MDAxZi2aZ1x1MDAxY+m37dRJ4ofk+/d3U0fnPK0wYyv7fynSS2cmXGZcdTAwMDaQhiHUy9+y3I5+ujdcdTAwMTdcdTAwMTj02EdcdTAwMTme7ejgqqP5m54xVHRuXHUwMDEy6VVcdTAwMDZnXG5cdTAwMTRcdTAwMTlOcXGdrHf17HS8bv+SQvhlpKNG7+TMaT7oomvytbLeWmPUrFx1MDAwN1x1MDAxN1x1MDAwM+/SPGQ+XHJcdTAwMDZH9f7xX2O907UpwXpcdTAwMTVFe2O9q2W9iFx1MDAxMFxuXHUwMDE0h9VcdTAwMTeivVx1MDAxOHFONUbT65032vvkKiVo7zNQsGrayydu5pLqRVx1MDAwNVx1MDAxNGaUL/CyYH5O3FBcdTAwMThDmapuvbyXVbUyxJdcdTAwMDCGVeDR1eHY3yS+z3LQhG5O8FK4XHUwMDFj651cdTAwMWZBcyVGTPj1s96sn1x1MDAxNaa8nPZmiNfEXS9njHG8QKV8d+LDs/P9g1x1MDAxMdw7PMatw6F0XHUwMDFlNv6yl7LN4r1cdTAwMWFRXGJcdTAwMWSB41x1MDAxZuG9f56f7p/RW3Fyf73fhN2dXHUwMDEzLbzyO6f1xfgpQDhcdTAwMDN0L+Kn07UpwU+p9sZPV8xPXHUwMDE5J1x1MDAxYeLT2OlEW0JOsSpcdTAwMTOJqlx1MDAxNVdPTlx1MDAwMSaILOBkr5CcPpOvV01O9ZlXLJBrkDOV98qT0/mJa0Oxhlx1MDAxMFTVXHUwMDAwYVx1MDAxNHDF0yj5c1e0gFBMdEhcIipK0miZTVuZ2lxy0TSW/vjoNdPWXHUwMDE3kcjciVx1MDAwMb5cdTAwMWONnVx1MDAxZmv/XHUwMDAzXHUwMDFhO8tcdTAwMDdcdTAwMGLTS1HaPFx1MDAxY2d+Klx1MDAwN2bWv4RcIqYq4FJv78ZcdTAwMTnG8380waXUxD0hXHUwMDBmjaPDXHUwMDAzrl/trjjDvFx1MDAwNGVnXFzj8qraKCu+/Vx1MDAwMbBKozdftKDJYlx1MDAxOYYjU4diMsOQKYUwmqS2XGLqKqdcdTAwMDCcnsE6c8rSt0tcdTAwMGLDdGSbPUNcdTAwMWHPwW9cdTAwMGXSXHUwMDFk0ZRzXHUwMDAwXXqZa6I8buf2UFx1MDAwNOlYj+WCh86uXHUwMDA1KadcdTAwMDTpXHUwMDAwlq9cdTAwMDW9PWnV/VZjp0tb3fpR7eGjtXuy8dGDKK5cdTAwMTJcdTAwMDb0bNW7OfFcdTAwMDM0pVx1MDAwMM6ewlx1MDAwYuNnXfezb1x1MDAxMTRRqEQ/N9Gz1c1zXHUwMDAxdNr8fN35od/i3dtcdTAwMWFcdTAwMWY2Rq1Bq0Y2PoCIKotcdFQuupFcYoRcdTAwMTkmXFzPsoS3XHUwMDAwWmtcdTAwMDBtPVx1MDAxMcKK4ftccqmskzDkyoMt+rUpJ9yMP9H8OPxcIkdcdTAwMTeRqVx1MDAxZn9t/fpcdTAwMGYxykNcbiJ9Operator Operator Operator Operator Data Data Data
There exist three types of operators: sources that produce data, sinks
that consume data, and transformations that do both:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1abVPbuFx1MDAxNv7Or2DYr41WR+/ab4UtLZRtu0Bvae/sMCZ2XHUwMDEyLyY2tiFJO/z3PXaI7ThcdCGtU7L34lx1MDAxOUhcIsnSsXSe5zxH1ret7e2ddFx1MDAxNHk7v23veMO2XHUwMDEz+G7sXGZ2XmTlt16c+GFcdTAwMWarWP47XHRv4nbespemUfLbr786UUTKu0g7vFx1MDAxYd/pXHUwMDA13pXXT1x1MDAxM2z7X/y9vf0t/19cdTAwMTkr8Pte3jYvrYxkTL30XdjPR5WgpVx1MDAwNm5k0cBPfseRUs/F2o5cdTAwMTMkXlnj5mZeyH19PTw78lx1MDAwZYedw/NcdTAwMTPH1yejctSOXHUwMDFmXHUwMDA0J+koXHUwMDE4P5LT7t3EXHUwMDE1m5I0XHUwMDBlL71Pvpv2sFx1MDAxZWrlxX1JiFx1MDAwZl/eXHUwMDE1hzfdXt9Lkql7wshp++koK6O0KHX63byPsmSYtSBCgGbWMKNBciZEUZ11IFxmXHUwMDEwroSxlEpulOE1w/bCIIwzw36h+VWaduG0L7toX98t27Q9V7hO2WZw/7imtKnn+d1emo1cXJYlXj7n1nJcdTAwMDCltSoqsv6jXHUwMDAzN1/4v6qT0nfvJ6V/XHUwMDEzXHUwMDA0pUlZxauKs5T33ESuM15ZUFx1MDAwNlx1MDAxOOOgLJe2qEdcdTAwMDe6rHdcdTAwMTeE7cs5zpCkTpzu+n3X73frt3h9d0FN4CTpXnh15adoxofQ76f1XHUwMDE2eb8v4zhcdTAwMWP0PMed0/PCuijrrkRHdpXftkuHyH9cdTAwMTTf/3qxvLVY2lxcrdjeTLVnlNDqXHUwMDA1q1xyx4mUXGZBrLQx6MBcdTAwMTS8XHUwMDE2yJVcdTAwMWWwYu9W9fPuxWpEw0vD6kTDuULgUaZcdTAwMWZNNG9P7e3o6D211+lXQ4eHkYZdufFEo4BIaoEzLqiUVLBcdTAwMTmi0Vx1MDAxY1lcYklGKm0rPNQo06BcdTAwMTFAOUevMMKCLNn9XHUwMDAx4lx1MDAxMYpcdLDWllx1MDAxNq+HeLRmklx0TYUoo9Iz8UwuVmOGpyaqRZ6UW8eJppZcdTAwMDI1yjIlXHUwMDE08H8tcWldLy1cdTAwMTSS4oxRVlx1MDAwNsllvOV8eHt77p2ev/5cdTAwMWS6b9RoeHT0RdBN5y2GvCUoMKo1p6BcdTAwMDUt5ceEt5Q1XFwgrzE2Vf3kvFx1MDAwNVx1MDAwNlx1MDAwNFx1MDAxOEUrXCL3mbieiev/g7iEXFxIXFyMXHUwMDAyUFx1MDAwNK4sXHUwMDE5YVx1MDAxOXWdv/7zVMafXHUwMDA33Y+R6Vx1MDAwZSP2/uXewe6mU5dgjHBjXHUwMDAxUMBILeuCi1x1MDAxMiNNtthcdTAwMWOlTYVRms3splx1MDAwNXyZP1x1MDAxNrzFLdGCK8wuwWpDZUX4jWlcZvWi1YzK57zvKVlcZlxmYblsZ0Dxr1xm+3llfVxyl/XWQrUvhJVaXHUwMDFii3/IOaLa34xPLOtPT1vH2UO9saW9aWKMXHUwMDAwhbqfXCJcdTAwMGbCXHUwMDE0RVx1MDAwMsJcdTAwMDZQXHRcdTAwMThAo5FDuVkrv6XeMJ3Hb1x1MDAwMFx1MDAwYreukL1FlrBUcqhl/HaRyM9JeFx1MDAxY3W6XHUwMDFk/5LdXHUwMDBlguFua9gwv7lh5uONajNhicIl0CV5janNXHUwMDEwKo20XFz/XHUwMDE4q4F0nIvOLKtVpr6gMVZcdTAwMTlqzFvSYPy06EPrVl+KZ57KaEV7rsBbnbCfnvhfx4FxqnTfufKD0dTq5N6IU0NcYtmZKnxcdTAwMTn43X5cdTAwMWWPvc60v6Z+21x0iuo0jMraNlx1MDAwZeJg/I5cdTAwMGZmuCuM/a7fd4LTeVx1MDAwM2Yx/81k4oFUpv7CSbxcXFx1MDAxMWSL9F24slx1MDAwYmFlJDModNXjXHUwMDEzXHUwMDFleipcdTAwMGbdXHUwMDEzqlx1MDAwM7h+tSd2e2503GlvPKpaUEklcjxRTbhcdTAwMTWSXHUwMDAz+zE8XHUwMDE51rbgzeJJlY77XHUwMDAwnjhcdTAwMTXWUrN2PN3rXHUwMDAwRTmtetxa8XQyftnxUyFVXHUwMDFmc52oQr29MFppSZnA2X48rs7iv+mnXHUwMDAxZ6I1XHUwMDA02kvPPlx1MDAwZlx1MDAwMr6/8biSXHUwMDE4lrg1gtfDVeXOJlHFXHUwMDFmXHUwMDE1pYCjTaiaKu9gflx1MDAxNFaFwvlWfCuWLtp9c/Xy5Fx1MDAxZOvQT9fh17NzPTxqn1x1MDAxNbZP+ZKT6dqdouZuXCKXNlx1MDAwN7RZ/z9cdTAwMTeyUyOuXHUwMDEzsKwyj3XAXG7DOVx1MDAwMtaWydwywH50OY2cL1x1MDAwM791ffrh6n0w8NNIbzxgMdxcdTAwMTOtpGLTeFWSXHUwMDEyyS1Va4qGoOZkybPAzVSfolQ391biIdzKtvjQPd9vjXquXHUwMDE3vD5cdEYqXHUwMDFl2Vx1MDAwNnB7v3XIXHUwMDAwRNWv14rb09jpJ50wvnJSdOvk50J44eBNoHk89fPi7+LdMJBcbpWVhsrrrWVwfthcdTAwMTk2XHUwMDE2zlZcdTAwMTHFuFx1MDAxMlqCwJinp486qGybwGIj84NZ41wiXFxcdTAwMGJFKFxihlx1MDAwZT9cdTAwMWWez1G9QIFcYkPFtFx1MDAxMWPAI1x1MDAxNVx1MDAxOaZWUb8ljidcdTAwMWUy2fq4W1VcdTAwMTSXSaaueux3bo5VXGa7P7xz8Ig4kSO7fZNZ2aKEU1x1MDAwNjiNQuOCiHJzMJtcdTAwMTgnyqeS6DxKaTnz0D9tP24njf2xN1x1MDAxNi1cdTAwMWHdlWvxmk9zVb2/xShRwFx1MDAxOaqjpbvwrcX+mVdXXbPsa6v6uTItMcbqpVx1MDAwNS1xoylTelx1MDAwNVraj+lp/KV7MFxmL079fdW5XHUwMDExveN442mpJTVcdTAwMDHFXHUwMDE0qld0ZaSfMlx1MDAwZsqzXHUwMDAzsIQyRrnkXHUwMDFhs1+9JnIyfJZ3yleLnHBhtcDFoGBs5Vx1MDAxNeeYmbLoTY1cdTAwMDC2Slx1MDAwZdE4OUlDdVx1MDAxM+T0NDv362ZcbsmI5lnuOTlKVb3bXHUwMDEyS4XgUozXd1lfc5wlu+pu0lx1MDAxOEuoheJFXHUwMDFiaUGrMtNdxlx1MDAxMVx1MDAwZuefm8pcdTAwMTFSK2KQXHUwMDAzoJaKIORI9qI1i4BMKmpqJjXDXHKomzj2n1x1MDAxZN3CPNvAPIbQxHBqjLZSSkHp7DaDVmCEUnyVdKV5ikCp+12b5I/UL1x1MDAwZm9MVfRcdTAwMGIlzPLsmJuiXHUwMDAwyuL6Vd5/TVx1MDAwNFxmXHUwMDEwqSuR+39RvsjsUKDkylxuM3atqdeAXHUwMDA2/U5JYFx1MDAxM6da2t1CT82uXHUwMDE5XHUwMDFmXZGfXHUwMDE2n+2U9dJcdD2h0yEjPv6YwavUMX/uRt1zccs+yuP/vG3Z46ZcdTAwMTOrxo9cdTAwMTlkXHUwMDA3SpQ1yMNcdTAwMWPJXHUwMDE4eEnWk3NcdTAwMDZW4YRnW7xaremYwfdcdTAwMWOPQtWiXHUwMDA1z4xagZKej0c1zVx1MDAwMc/Ho1Z54MbOdZqFmZdcdTAwMDFcdTAwMGKM28efR9/7O+Hxxdfk8FV841784Xu96zdN7+42zlpcXFCiNTdWZ6qqXHUwMDFhecrz6EZKaynHpVx1MDAxMrZm2Fx1MDAxM/KWkpjPXHUwMDFiXHLPx9Gfaau4/q20tXV//45cdTAwMTNFJyn6XqGud259b7A7XHUwMDA3TJ38yl4w5KSX8YuXZ1x1MDAwYndbd/9cdTAwMDDiYlx1MDAwM9EifQ==... Source Sink Transformations
Typed Operators Tenzir pipelines make one more distinction: the elements that the operators push
through the pipeline are typed . Every operator has an input and an output
type:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1dW1faSlx1MDAxYr7vr3C5b1x1MDAwYnvOh96JLUpF5KCCfmsvV1xi4SAhIFx0oOy1//s3wdaESGiiqElcdTAwMWJcXLUymWQmk/d53sO8M/n3097evvMwMfa/7O1cdTAwMWL3umZcdTAwMGU6U22x/9ktn1x1MDAxYlN7MLbUIbT6bo9nU31Vs+84XHUwMDEz+8vff2uTSd47K6+PR49nXHUwMDFhpjEyLMdWdf+nvu/t/bv67WvLXHUwMDFjWMaq7qrUa4lLXHUwMDEyLK2MrVWrUFx1MDAwMCwkk1x1MDAxODzVXHUwMDE42F9VU47RUYe7mmlcdTAwMWLeXHUwMDExt2jfRp2eYT1cdTAwMWN362d1MKy0KGh+J16z3YFpNpxcdTAwMDdz1SN9OrbtXFxfc/S+V8N2puOh0Vx1MDAxY3ScvtuDQPnTufZYjYB31nQ86/Utw7bXzlx1MDAxOU80feA8uGXAu1x1MDAwNc3qra7hldyrb9hXwz1DXHUwMDEwXHUwMDEyaPtwbI6nbtvOVLPsiTZV4+31oK3pw57qhtV5qvdcdTAwMTdCom0wr87ix11cdTAwMTGvqb4x6PWd9TLbWFxyL1x1MDAxNVxcQFx1MDAwZVx1MDAxMXo64F5/UuqsXHUwMDFl8j/emE61kVFyz7BmpulcdTAwMWZcdTAwMTKr82NI1lx1MDAwZbTdXHUwMDAz33zy4l1qNuloj89cdTAwMTYyyVx1MDAxOESQYUK8XHUwMDAxVTI0XGZezlx1MDAxY+vDXHLiYDva1ClcZqzOwOpcdTAwMDVPMaxOyFx1MDAxMVOzncPxaDRwVDeq44HlXHUwMDA0a6yuezCdjlx1MDAxN31De3bT6sqhxybu5TyAuFx1MDAxZu+vPU9cdTAwMWNWX57+/ufzr2uTX1ZHIFx1MDAwZtY+JN75ZK09XHUwMDE0ob2X342v9if///99jkcsXHUwMDEwIFx1MDAxOcosgEiBqWCRiaXSXHUwMDE2zpmuW99ccnhwr01cdTAwMWH2Td26SVx1MDAwM7EgtntiXHUwMDExTFx1MDAxOHJcdTAwMTOxwDwnRFLOhVT/uNfjbTyjnlx1MDAwNcWSet3KeCaZPPNr3OdcdTAwMDJcdTAwMDJcdTAwMDDkXHUwMDFh0WCpXHUwMDBlY4ZcdTAwMDWDklx1MDAwYkBJPN6Jy1NcdTAwMWbDO1x1MDAxY8Fg6U/aXHUwMDExiFx1MDAxMskpj27PLFx1MDAxNsWL7v1ph51cZoFl4PqsfoRaIbTT1/T+bGqkinL+gob7s5VuNtLST8pcdTAwMTGRbFx1MDAxOYwlXHUwMDEzXHUwMDEww4xj0s8xMSmBxawvXHUwMDAy3Vk3nGC85nCeUsQhZlxcXGJcdTAwMDAogEZcdTAwMGXSj7GGWLgxRKnqXHUwMDFhXHUwMDEyUESmpYODXHUwMDA2nn8zzSW7MIvmYem03KOpcLNcdTAwMTBZpyYmXkVNoZZcdTAwMTDKXHUwMDBigqCr/zAg6sd98F5LT0yFXHUwMDAxzSs7VDKiNFx1MDAwM+Q+evhBXFxQqlx1MDAwN4NcdTAwMTRveM8mY67EMFdu62N2P89cdTAwMWXwjuCMYKiRoexpJlx0Q9F9m4vpqFxcXHUwMDE5XHUwMDAz0Ojz7pxf5lrtstDSgGZcdTAwMTZcYprw11x1MDAxOVx1MDAxYeF+XHLbYGU8MzIgUuOuzF6WRUySiFXC3kSxXCJIQ1x1MDAxNatQfq36gOhQPG9cdTAwMWG5Rm6kXddBXHUwMDFitCAlw+ZcdTAwMDKmXHUwMDExikppfSBcdTAwMTQpwpAynMUu/ywkhpu4jEslkVxmRve8yzo86Vx1MDAwZW1nNJ4sblx1MDAxNqeT4vx20kgjXHUwMDEyJfhQpchcdTAwMTGSWGZI/KOQiHC4TuSAXG5BeXRnU9S+89FyaeBjy+R654S062fdVFwi8Y2czYhIpFx1MDAxY3BcdTAwMDZlXHUwMDE2XHUwMDAz+4OQXGJ5qHWKpXJbXHUwMDAxotGB2GImbaPZtDvTSpdcYt1cdTAwMWR1h6VyXHUwMDFhgIhcdTAwMDNcdTAwMDHppEd9XHUwMDA0pZJjirOgT1x1MDAxMqH6YUFcdTAwMWYuQ1xyXFzBXHUwMDA1RiRcdTAwMGWYr8qUOrlW5bB+M69rXHUwMDE3J8urXHUwMDEzk6ZcdTAwMDLMQa1cdTAwMWHuaUae0CZAXHUwMDA3lL80U0bpVFwiISA4U61cdMRrlipcdTAwMTMhVVx1MDAwNodcdTAwMWHsnFx1MDAxMVx1MDAwZVx1MDAxMYkxOVSZWieyWazdXHUwMDFlXddv0VxyKeG7ajNccsxcdTAwMTKct95cdTAwMDWz7DRVXHUwMDA2XCLKXGIkPMuVSTzRZLkye1EsXHUwMDFhXHUwMDE06p5cYo6hO3PuXHUwMDA1jn7FO+OideWcXHUwMDFjXGYrXHUwMDA1XHUwMDAzkyNiaLqs1tKWK7OFc94pV0YoiFx1MDAwYpBNOP9cdTAwMDZcdTAwMTSTpcq4v2OTXHUwMDEyXGI1hlx1MDAxMESSXCJcdTAwMDFjsFx1MDAxMr+ossOr4vLcoFx1MDAwMFx1MDAxNVx1MDAxYVewcn+VjqCJWGemV2bxha5GiMZKXGIgrpxt7ptLzXgpMbyEMmJ6XHUwMDBmN02EJv1AxFQvsc8x+Fx1MDAxNS+dXozhKa5cdTAwMGXLs8LgqFW/aXUuh5U08Fx1MDAxMlx08FLSg7lcdTAwMTCqy1x1MDAxMIx9q9gy5kpcZnO9fTTXMe6djWgm4WhWXHUwMDA2hlTOIY5cdTAwMGVnszhvz8617mTQP7s5mmr1K3mfilx1MDAxYz6l1vOcKlAzZVkhN8Cxhm5cdTAwMGVAXkg18pwpd/hVQFx1MDAwZlxy8rK88E2TPSHb74k9Qllcbrg+dZ0mIHfHltNcdTAwMTgsV2YsWCstaqOB6Vx1MDAwZbY3viuhVYM2XHUwMDFm+5+2W3pgXHUwMDBletZKilRvjemaZDtcdTAwMDNdM58qOOOJd1RX7WhKr02fj8t4OuhccizNPN/YpqtcZo9/Plx1MDAxMphHvkdsXHUwMDFiK0355afBXHUwMDExXHUwMDE3gdtS9zhXdj7COHrY8/jiW+dw0W9fjaxTVlx1MDAxY+SgzZupSFx1MDAxOMJCKoJcdTAwMDPuXHUwMDFhPMGYXHUwMDBmZHHwJznU0cvwR0WeSlx1MDAxY1xygYRhIFx1MDAxOUjpTMuLINh+cFxm+70xXHUwMDE4aPRcckGIIVxulv5cdTAwMDQhXHUwMDExXG6GSOndyFx1MDAxOLw/dXCh1r0tLUuXmq63q5e3RZBcdTAwMDZcZlIg84D5oqHPsVx1MDAwN1x1MDAwMFxudMfnW3elQcjL4MdBXj2DSOiDlFxuzCGR6TRlX1x1MDAwND9jvurTO+Mv2OpbasHwXHI4JGaMcVx1MDAxOGO9KmvyauPrJVtcdTAwMWVcdTAwMDBzQMp2p1Gc4zRcdTAwMDBQSVWe+JXQY8hL5EWgXHUwMDBi76/zIFFiXHUwMDBmsExp6GvnSm+6XHUwMDFhqVTrPFx1MDAxZoFcdTAwMDZXb0FBXGJg0VeMkFlcdTAwMDHmjlx1MDAwMH6wYePw2rGv+2fFg1QgToFcdTAwMGJcdTAwMDY0nkTbXHUwMDAw915aTlx1MDAxOcNcdTAwMDKldVx1MDAwNmz3Su6t8PaOOlx1MDAwZYZnzimPXtk0sazMy+p4eVtr1lx1MDAwYlx1MDAwMPbIXHUwMDEwXHJn0mksUlx1MDAwMTku8lx1MDAwMVx1MDAxNcdcdTAwMTUwtqi4d1x0qzDEXHTiSP5BgNtcdTAwMTJXeSu47TysXHUwMDEyNk0heKhHpzhcdTAwMWYjzmGMeYrjSmVSNO5ZXHUwMDBlLYej2XCh9dryLlxyYKOBrVx1MDAwNjh7w2yyaHmqgFIkUbYsMpEzXHUwMDExr0rf2n1ealx1MDAxMtLDIJChVKLUNnXFOXqAVu/O+Ons2pF6oVV+ONTb184yLD8sWUxcdTAwMTLc5mBcdTAwMDdMXHUwMDEyqrVfkpeK2WptLUqng/qb81xuXHUwMDE0eUQpIFxiqSfkJjD5z4Zxs0yzrFXXZt6yl5JQg8LiLG+daVx1MDAxN6Xit1x1MDAxYbFqqDdq15tXs+bRbdLTVmNQ0julrUKEXHUwMDA1YTTb4y2RJPTGXHRiXCJmfS7zkmFMXHUwMDAwZIBI6W2m9Ni7PMCUYC5cYlx1MDAxMVRcdTAwMTFcdTAwMWOL1/zbktLU0J1HTG5yvcIntFx1MDAxMVx1MDAxMIhwXHUwMDE5I5a/vDtrfV9aJ43Te0P/Vlx1MDAxNq1SX9ppsJeCOfXbyFx0XHUwMDEzrFx1MDAxMfAyrytcdTAwMWExXHUwMDExTLl0dWWaeGmrXGKGRtkwXHUwMDBiXHUwMDEzP8kkUFx1MDAwNkGMTcm6s05tIXO1RrU5rts9aJ093PA0SF8wb5r5RWKH0sdxXjAsKWKYcbgx1IZpUFx1MDAxOCnEkiPxXHUwMDFihNrEWulTqM277s9QW8mazHzi+j7zt4FGg9E26nviXriNvlxmdSTUR1ZeXHUwMDE5UaaojM753ctyWVx1MDAxYmjgzDhcdTAwMDeofVO9mDcnLFxyqEProNu2WOE1oJM877I5XHUwMDAxXFxShVwisikh+Fx1MDAxOeggXHUwMDEwXHUwMDFjwbTuXHUwMDBi+Fwi0J3NnHDUvVWEO9joLlBcdTAwMTe+XHUwMDE3Q6iuU1xcTCjDNEaQu4euzDNcdTAwMDPdz44vbuyvXHUwMDBiUDip9c7TXHUwMDAwO1x1MDAxMsBdXHUwMDAyNmPAXHUwMDAyXHUwMDAySf2GbprQ9pv7gdlmXGavem9cdGKcXG5cdTAwMTLnhUiNpnN00zyz2oUpmDUqpaOH71x1MDAwYidccsxcdTAwMTI0o3fBLKEvRHpJ0Fx1MDAxYlx0xvjakquMZ1x1MDAxMsMzWdB7Q+1X0Vx1MDAxMlx1MDAwZs/ThpxiJYxxUmiK1cXJssCG1+hcdTAwMTL3WVx1MDAxZNBcXKdcdTAwMTe2R0xigt4xKOmdgt6EcaDckGziLYlcdTAwMWOULYredoO74iVcdTAwMDHCl1G6PjpcdTAwMDcsxq54x+doNFx1MDAxZlx1MDAxNk9ql+VF4+jO7FVrbJZcdTAwMDZzKZht9PHvj4SYQ6Vcclx0zVx1MDAxY7FcdTAwMDSSU+aIRdlcdTAwMTVvy6tpibL9XHSP8Vx1MDAwNslDelxuT1FrySadar1DXHUwMDBl6v2DiZVcbmp5g1fT7jT9XGJcdTAwMTJ3dpOBjGmSyDSZK7ah9quIicPw2DOmXHUwMDEyQ1x1MDAxMMNcdTAwMTPrXHUwMDFk31x1MDAxZTq15vygwVx1MDAxZYblwv3XlpiHvdg2MZ5YXGZKeq/0I1xiKeZEpHTV0G/OQZkrtu1cdTAwMDZ35or5oFx1MDAxMtxFmFDFyHGmxC5cdTAwMTQoza9cdTAwMTf69VU110Wj6rduXHUwMDA1p1wi/yM4JZaAdVx1MDAxZlJcdTAwMTAoXHUwMDAxy8JESeSmbN3Hj1Kf51x1MDAwNcODOlJJXHUwMDEyoizG1ljzy7tcdTAwMDLuz6uFwl2xcVx1MDAwNS+73FikYqe7YLx5XHUwMDE3TLLTKTBcYlx1MDAxOCCY+s3NjFhcdTAwMTJDLJnjtaH2q3hJ3XZcdTAwMTgtXHSssMBxjJn5XHUwMDAz7Y4sb5ujUvfq8PzhrDK6ZaCUdMcrXHUwMDA2Jb2T40VcdTAwMTGUmFxikVFQXHUwMDAyKShb9vHmlFx1MDAwNENj1Igjl/pjZP/eTGr2tCfg+LraupZa26idap00WErBeNArZ+ZDw9PRKElJXHUwMDE2XHUwMDAxad0mNGOkLFx1MDAxMrRcdTAwMTeVlVZcIrx57kxcdTAwMDRLn2hcdCh1zTiJwUt6hVx1MDAxY5/fXZx9tXKmxXPorr1oh83KJ8ZUylGel8pbXHUwMDE1gVx1MDAxZHdcdTAwMThCeVx1MDAwMOH6kp2d205008pcdTAwMDTxjKogI0hcdTAwMTJcZsGHmk9UiYs3XHUwMDE2McjKcsXvseqjnH76Ief72mTScFQz6uij1O7PXHUwMDA3xqKwgeu7q8/+p1x1MDAxZlLuSpPh9vjf/z79939cdTAwMTPs14gifQ==void bytes events bytes events void Input Output
When composing pipelines out of operators, the type of adjacent operators have
to match. Otherwise the pipeline is malformed. Here's an example pipeline with
matching operators:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2aa1PaTFx1MDAxNMff+ylcdTAwMWP6ttC9X/rO2yiIqFx1MDAxNevlmU4nwlxukZCkSVx1MDAwMMXxuz+bqFx1MDAwNCiRxGJLZoIjmN2zOZvl7M9z/snjxuZmKXhwVenrZkndt1xmy2x7xqj0OWxcdTAwMWYqzzdcdTAwMWRbd6Ho2HdcdTAwMDZeK7LsXHUwMDA2get//fLFcN1KPKrScvrPI5Wl+spcdTAwMGV8bfufPt7cfIzep3xZpq1cItuoNfYkXHUwMDA1mW9tOHbkXHUwMDE1MilcdTAwMTBDXHUwMDE0sYmF6e9qV4Fq6+5bw/JV3Fx1MDAxMzaVgivo4cG32nXX3rNZx/Ru/KPt2O2taVlnwYNcdTAwMTXNqOU5vl/uXHUwMDFhQatcdTAwMWJb+IHn9NSF2Vx1MDAwZbrhXGbm2idjfUevQDzKc1x1MDAwNp2urXx/ZozjXHUwMDFhLTN4XGLbXHUwMDAwmLRcdTAwMWF2JzpH3HJcdTAwMWZakPg4XHUwMDFjgVx1MDAwMJvzveNYjlx1MDAxN12jZ9i+a3h6veNcdTAwMTncXHUwMDE4rV5HT8NuT+w+ISRuXHUwMDE0i21GL1c15aqrzE43mG3zVbS8glx1MDAwMoSgfpt0hOd3q+3oS/5cdTAwMTGvqWf0VTVa/YtT2jvrIOvXdVxyXe/e7+LmrVGdWSW7/bJK9sCy4smHXHUwMDFke1MhXHUwMDE0n33gto3nr1tHXHUwMDAzY1x1MDAxMEHEXHUwMDE5iENGh1Vv/nSW0+otiFx1MDAxMD8wvGDbtNum3ZlcdTAwMWai7HZCj2X4wY7T75uBnsaJY9rBvEV03i3Pc0ZdZbRcdTAwMTecObHPXHJPXHUwMDE375nwXHUwMDE1/7VcdTAwMTlHSHQw+fvH5+XWZKk5XHUwMDAyXHUwMDE1MPNcItnGk1x1MDAxOX8ohb/3X82U9cb059PnbKzR0SOTYCMxXHUwMDA3klx1MDAxM1x1MDAxMof7MtZs7anG1v7Pw5GyfY/j44Mjdn6VXHUwMDBi1oDVs0YwoeRcItbAil5USTlcdTAwMTdS//J4xm+ghyCJKaVQXHUwMDE06MlcdTAwMWZ6lqOgPFx1MDAxN1x1MDAxM0DOsFx1MDAwN0vdjVx1MDAxOVx1MDAxNlxmSi5cdTAwMDAl2VCUXHUwMDE1Xf9cdTAwMDZFXHUwMDEyovnWV1x1MDAxMmFcblx1MDAxOMQw3lx1MDAxNctAhG6Bc3dVPe7f1a/qorl1SC/7Z1x0IOpcdTAwMWGt7sBTuYLQJ6jCnzdcdTAwMDG0XHUwMDEwVK9cdTAwMTBcdTAwMTKpXHUwMDEyXHUwMDFlJlxiRXIq2Sygk1x1MDAxYugs3/RcdTAwMTnNWUZ7McfA2eRcbmZzhyuUXCJcdTAwMGUx40JcdTAwMDBAXHUwMDAxVGVI/1x0poSE862vmEKIY1x1MDAwMTSlU3Nqd4xcdTAwMDbnvl3fcczxcL93fn80vlx1MDAxYeZcImFcdTAwMTIrZVViYZaOU1AyjHSqXG5cblLlg1QoY35UoCp8z5xRXHSchCohmeB6hqlJddTYNti4hz1L1OqHu6fBnjuq5oFU+Fx1MDAwM0o7XHUwMDAyWoDy98pIkEtcdTAwMDEgnV79glbrTKtCR0qjI7H55klaXHUwMDA0McGUXHUwMDAwmJ42u3tcdTAwMGb7/aPjMrssN5suPPk2XHUwMDFhnNTzQFx1MDAxYsRWT5tE0fo9QpLe61x1MDAxY1xigWi80Vx1MDAwYvisM3ygqCBKXHUwMDAxQVxihndcdTAwMWaQnFx1MDAxZVxys1xuQ4XQXHUwMDE05j6JkjdcdTAwMTSccFx0QIbE6PK0PTys1kajn/vV47NcdTAwMTPgXFx7nfK6S01cdTAwMTkw9ZekJshcdTAwMDGiXGLzKZGv4NI6c6ko4d66wNWJ4olqk1x1MDAxMJhcdTAwMTDCeXpVvFx0XHUwMDFisNapXHJcdTAwMWNWfzhcblx1MDAxYSOvP1x1MDAxY+fi9lx1MDAxY07/KEAqtSmpfkurNlx0QSjUXHUwMDFmXHUwMDA1qlxuVFx1MDAxNah6LVx1MDAwMbX3JFbhMHtlXHUwMDE5hHFcdTAwMTL8Ojs9KINhbbjzvXE3bsBhk+VcdTAwMDFV5Fx1MDAwM1xuwMQnXHRS4Urn8ZxQxoqnlvJBqz+qqFavLq1DxaZjJVx1MDAxMS1hsYr4lJyxXGYth0ZnXHUwMDE49L+fuP26t3Uj2sTtSz9cdTAwMTdoQatHS6KS/Vx1MDAxZW1JMEZcdTAwMDVnpLhcdTAwMGKXXHUwMDBm0lx1MDAxNNLSXHUwMDAy6z9cdTAwMDKVvvokTkHApWSYZCBV+aDXVOdcdTAwMTfnQ9c92Lvnd2V6Xkuq19ZGWspAqb8lLVx1MDAwMVx1MDAwZVx1MDAxOeY6XHUwMDA1KriUXHUwMDBiLn1wvSYy2nNZ0Vx1MDAxYlx1MDAxN1x1MDAxM1x1MDAwMPXXJadcdTAwMTSZ59lVXHUwMDAwplx1MDAwNHNBiKCaeSyb+4/lVFx1MDAxNNGLQIVk4u06XSlcdTAwMDCGMshKS/bKemKq/PvTlmDO+So5tVx1MDAwMFRcdTAwMTRUXHUwMDE45zpzRVTXxlJcbvpcdTAwMWK4qFx1MDAwMIRrSKQv3WY25aooRUj8Xy1cdTAwMDOl7DD2nk2fg3TjJchLhuueXHUwMDA12o3ufVx1MDAwZdnS0FSj7Vx1MDAwNfnpbfQqbbyEeFx1MDAxOEwqnPHj08bT//NcdTAwMWEwWCJ9
We call any void-to-void operator sequence a closed pipeline . Only closed
pipelines can execute. If a pipeline does not have a source and sink, it would
"leak" data. If a pipeline is open, the engine auto-completes a source/sink when
possible and rejects the pipeline otherwise. Auto-completion is context
dependent: on the command line we read JSON from stdin and write it stdout. In
the app we only auto-complete a missing sink with
serve
to display the result in the browser.
Because pipelines can transport the two types bytes and events , we can
cleanly model the data lifecycle as separate stages:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1d2VbjSFx1MDAxMn2vr6jDvLbVuS/9xlqAKfalYGZcdTAwMGVH2PJcdTAwMDLGMrJsg+f0v0/IgLXLllcxU65uqpAlZSozbtxYMkP/+fb9+4b71rE2/vq+Yb1WzFaz6piDjT+8433L6TbtNnxFRr937Z5TXHUwMDE5ndlw3U73rz//NDtcdTAwMWTDv8qo2M/vV1ot69lqu10495/w+/fv/1x1MDAxOf1cZrTlWFx1MDAxNdds11vW6ILRV35zmKHo0WO7PWpcdTAwMWFTIZFcdTAwMTBEjE9odnegOdeqwrc1s9W1/G+8Q1x1MDAxYruDn6XrK/PxSlxcXHKHj8+nvZPOQ9tvtdZstS7ct9b7c5mVRs9cdPSp6zr2k3XTrLpccq/xyPHxdVXb9Tow/tqxe/VG2+p2Q1x1MDAxN9lcdTAwMWSz0nTfvGPIf8D3Ufjru3/kXHUwMDE1fmOBM0ZXiMCB99a37ZbteK3/XHUwMDAzW95cdTAwMWa/+Vx1MDAwN7PyVIc+tKvjc1xcx2x3O6ZcdTAwMDOz4p83+HguQrWhg1x1MDAxZjk+pWE161xy1zsn2L41XHUwMDFhbYK0okr5x702O1x1MDAwN9XRtP/bXHUwMDFmYcd8tlx1MDAwZbxcdTAwMGLavVYrOEbt6sdcdTAwMTh9iocvIPTjyN/+Q3nn70ZcdTAwMDUrKFxcIVx1MDAwMXOtV/9JXHUwMDAz4nD30C61LrqdbrvssjbCpyfne8ON8Xl//5F82/eLz34q5+T0plc6fNrrvVSOe+2DQS3cymf7puPYg2nve7Uvkd1tdV92nfu921x1MDAwYvVjf/Pn41x1MDAwMu77rDZPtqtnbze7O689hfXLfenGnu6+XHUwMDFm//Knsdepmu8ow1x1MDAxMlx1MDAxMYmkXHUwMDEwiiNfUlrN9lN0jlt25clcdTAwMDfmt0CHY1xuITRfQV1AdJouoIJLjVlcdTAwMGVdkDz5ybqga4NWy61cdFwiVy1AXHUwMDExMG4gSVx1MDAxMOg9RrFgSET1XHUwMDAyn0cv/MPSVsWqxXVcdTAwMDJm2lCca1wiuKdzsVJxnSBjKsE7l3LM2Pw6IfRFXGb8mXIpuMY55NLvld12L5pDb1x1MDAxMohcblx1MDAxZN0zn5utt9Akjlx1MDAwNFx1MDAxNkbwwnV6XHUwMDE1XHUwMDE3WKP6r/aO6ZpcdTAwMWKhMzZbzbonxlx1MDAxYlx1MDAxNei55YQk3G1cdTAwMDJzjk9w7Y7/bVx1MDAwNdo0m23LOZiGw2ynWW+2zdblxC7BYFj7n9OHXHLCXHUwMDAzstG1vG/huECZSM2mbsJ59LDP3ZJhQZRcIlNcdTAwMDOW711cdTAwMGVeXHUwMDFmcel52D88LL9cdTAwMWO/7mxbcsHkvVx1MDAwNMhGuVvRNIwm8nJcdTAwMTJOXHUwMDFmSI08PCTgVPiNjYHJkIGCn0Dz1lx1MDAwN1RcYlx1MDAxMpooulx1MDAwMPKeXHUwMDFkqFpcdMaDsjlcdTAwMGaBZIslTZdKQjGoLYbR1FJZ3WMl3G+2SHXoXHUwMDBlrPL+S6WBjlx1MDAwYm9SlshKbUqWIJfQg7BgiphgXG4lKGG8WEbl+7Tv1J06RfhcdTAwMTHXWfPtx0PnjP36ebhcdTAwMDAr7eh579fLiS5bd52Dmn1+ctY23epcXPedZFx1MDAwNOObizuqXHUwMDFmXodcdTAwMTeoe3PD9W5751ZP2131tnUwfO7Xy8f2eVWfvVVcdTAwMGWv+7tcdTAwMGJcdTAwMThcdTAwMDbrTZWaLbzPu3XlnDVcdTAwMDYvjVbr18KMVcq18q2SpVx1MDAxOaskenSsZjBcdTAwMTOKSZGD/JJnqdDWalx0htvgXHUwMDFjay6wXHUwMDE0kkvfjFqutaqwgVx1MDAxMdWgzDnYn1xc+KOcYa1ipKlcdTAwMTZcbq2XXHUwMDA1KYNcdTAwMWWvzFxcvWp3V2CwTmDIqMGa1alFmKzv+lwiXHUwMDAxsFx1MDAxNGWEmlx1MDAxOMGaXCLEpzdcZrJcdTAwMTlcIpdhQFwix5dorsas1Vxmq0BLXFwhs1tcdTAwMDXB3oyBXHUwMDE591wiJVOKXHUwMDEy5I/BOrxIolx1MDAwM53NXHUwMDAxy65rOu5Ws11ttuthM+QjLDpcckRGQK70vF6WkIF1+CNcdTAwMDKn1c2O1+uYaWO1q5M7sdU5Kt2et3eGZzt77L5bQlf78JxcdJ1AU7TYMrvutv383PQs11O72XajIzZcdTAwMWGaTVx1MDAwZoxccsuMzVx1MDAxYvQ4+Fx1MDAxZEhSM2LQd7ybhu00/1/fg52EX8b//vdcdTAwMWaJZ1x1MDAwN2Qxcv634N8z6Fx1MDAxNK6ihz91XG7TQnBQK9OrlGzj8IuoXHUwMDE0yZanUrRcdTAwMWZcdTAwMWZs+DTBlVwioEG0YFx1MDAwMilcdTAwMTYgjVx1MDAwZlx1MDAxNcNcdTAwMTCljFx1MDAxMeU7IGtQMWCSkjw26dJUXGYyXHUwMDE4xpRcdTAwMTJcdTAwMDFWKlwinCm+MFxyg1x1MDAxZeXRoHT+dtpuXHKZ+frYNYfsNblcdTAwMGbgpFx1MDAwYqngJ1x1MDAxMZxcdFx1MDAxOJ7l6JxcdTAwMDS9XHUwMDEy0Tyh61x1MDAxN6pzfGH1PqW4nC5KXHRcdTAwMTGp0yNcdTAwMWVaSY64QNO7XCLZiY+CaiGwxKKWXHI2JGEgXlxiKcVcdTAwMDJqOqqUSE1bjM2hlFx1MDAxMqLlyKBcdTAwMWExTlx1MDAxOaHgXHUwMDA3gZQnhOVAIVx0Klx1MDAwNVurQ1wiNFxuXHUwMDA0LFx1MDAxN6+WJlx1MDAxYVx1MDAxZFx1MDAxZmBPVFx1MDAxMkgoLaWSXHUwMDE0nD0pXHUwMDEwlrOppeyI+oQ+YFx0kKVcblx1MDAxM82YlmKM2i9rXG754jo6PS6oOdVSZixWXHUwMDA25D5cdTAwMTYk4VhxLVx1MDAwMmGDSZpJ11x1MDAwZn+QU1Y97Zq1x/uhc0iH1YfZNNNcbsMkPFcodk5cdTAwMGIpLVx1MDAxNFx1MDAxYtU+WioqwVZbgNu1woQ+Q/tb9dJB+a63f3z4o3a/PTzSlXyxQYJcdTAwMTTJ4+plyn5abDBohEbEXmNNXHUwMDE16P3pvYLkhy661DMmXGZwfjSMOaI4MFx1MDAxZZNjg/PGXHUwMDFkKDFcdTAwMTjVmoF9K1x1MDAwMlxyj+FA45lcYlxyXG5QXHUwMDEwpteay/ZEc3XBwW273Vx1MDAwNtVtXHUwMDA3wn6Li1x0TtDU0ZhgQl+ioUDFJWbjnyogXHUwMDFk48DgXHUwMDA3N89EVCCi6SY000pcdTAwMDE3Tlx1MDAwZll1fOGQzeajTe52Ov2SfOu9XfVmieavzoAuMVx1MDAxMaUpkUFTU8TvTV5VtaT4fXJcdTAwMTY7ikkqKZNoXHUwMDA1kJyNivaHRz8st7f7OLxs7L9cXN/L52H3aVx1MDAwNWm1KSkuj1x1MDAxZZmJ4oiUaYBcdTAwMTGecy9cdTAwMDSf3rBLXHUwMDFlzMJTXHUwMDFjpobgQHFcdTAwMTQzMKHjJCekMVdcbiyT5uDmXHUwMDE0+JVcdKJ0Ms/FI2Gez0koUPNao+1cdTAwMGLhOVx1MDAxNDqawXNHtlm1Zia552a1XHUwMDFhZIxcYs9NUPRRnov2Zap8XHUwMDE3VvPQmohcdTAwMWVcdTAwMWTTXHUwMDFhJ1x1MDAxYXMvOjQ1TO9P2DW67bRcdTAwMWUrW45cdTAwMWNos7N/3qBfjdYkWSutYSk5Q1xmMFhMXru7XHUwMDFklOp2ufSj26nL4Vm/NSD0oVx1MDAxOMs6VsNrOtVcdTAwMTBcdTAwMDTTXHUwMDEzSfBp2NSASVx1MDAxZczC81x1MDAxYZKGZMBrXHUwMDEyY6ywYFFcdTAwMDAtk9Y4N6BpzVx1MDAxOSFUUKJwXHUwMDFjVHFek0pcdTAwMTJcIvF6k8irpbVcdTAwMGKzvzRWm6DnY0uQw11ZXHUwMDA0qWUkXFxRKj458/5cYjJ9qiPbXHUwMDBlL2iqo0RcdTAwMDJp0M9VXHUwMDFjhlwi4Fx1MDAxYXOlhcYs0pXl5l/DTSOB/XPGXHUwMDFiXHUwMDA1XHUwMDE0Q2q9NidnoFJmXHUwMDAx55R5jmxD8HsoqyGJYJhrXG5mu9AwOIGz5kq/5khcdTAwMDFcdTAwMTMkNZFcXENXwIEhS8q+rjXNXHUwMDExzr7GpdS/wbfg3zNopPRdS1hcdTAwMGKhYIRz2NjZJlRRVVx1MDAxMo3mOJa5XG5kuoVlXHUwMDE4MXDMJVx1MDAwYkTa16F3XHUwMDE0XHJY+ovXO9lUXHUwMDFkxPzKtUzJyy2GP8tRM+tcXOQx58KyTOc9uGEmvsLcW9qQR7FcXFx1MDAwZU7rb/K0fXCMtuWm/HnCVdcpui+C8+RO513IMW3ulCCKmEaaXHUwMDE3K3n61bYtT4pE2Pxwp7N147BcdTAwMTPn9a639fiIrsubXHUwMDA1jFx1MDAxOFCZXHUwMDBlU65cYmFgdExcdTAwMGbT5KcuOkwlXHUwMDAxs1YhrLDyNr7wXHUwMDFjXHUwMDFil+defsVccsWoXHUwMDE2VFx1MDAxMIClSNq7nJDwJVxcY29Vz1qNg9UmfPds59lcZlxm4OKyvVx1MDAxM6glXHUwMDFhL4h2ZNWp3sCkx3YtU1x1MDAwZa5cdTAwMTnKsToje4FbIWPiOLZcdTAwMGJkzkxvzv3KMTBKSqmQVPhTXaiQeF9e7aDm6/OvS1x1MDAxYl/KM4Wv2IWaljeXtZF0XHUwMDBlni9cbnFcdTAwMTKVmkJWiFx1MDAwMZdcdTAwMDRDNpNwmDxJRedNJVxyXHUwMDAyXHUwMDE2JvipVFx1MDAxMbXqXGYyNzjXmlxuTihcdTAwMGJaMVlcdTAwMTlkpij8L/BaN1OsNtR+ajrdpcXaJ/BHlDujfVl+XHUwMDA2maRucJKcXGKFgvtqJoE0e4PI1yDLefPH85IlRl5cdTAwMWFcdTAwMTJM3WKS5cPJa/v+kl/esv7Vr1x1MDAxZOdw8PpYq62vOsLczmtRyDJrgVwiRyCVSrDpXHUwMDEzX8mzVHi2XHUwMDE0hoLTKJeIc7HavLRcdTAwMTBcdTAwMDaVWntcdTAwMGWJUkLihExYXHUwMDAyW3LKldT/R2npU6dcdTAwMTnmw4WS5Vx1MDAwNP6IkWW0M8tnS5Wx30VcdTAwMTOda7uL27s87/VvXkriStSsXHUwMDBlbfw8PnwuNlvKWLx2Tteyilx1MDAxZWqJq62SYrUqxpaaU8ZcdTAwMTld/sKQ2ciydy7b5W128fTYa5iX17jRUjs/i0g+XCJ9XHUwMDE5IVx1MDAwNYtEXHUwMDBiliNcdTAwMTOR/NRcdTAwMDUnXHUwMDFmMPtcZnhIxIF+XHUwMDE4cFB0XHSGXFxcdTAwMWX1aG0grVx1MDAxNZCPxvAjiXp4TPK9mm9cXFx1MDAxMLyIXHUwMDFkXl+FfC5cdTAwMWFmp9mu/6t90rFcdTAwMWPTtZ3uknhogmaOLZDK6NdUlMTo7JSEXHRNt1x1MDAxY5lcdTAwMDD3X+VZ0rh9cfLrcLfdq9z9eHGPOlx1MDAxNXK7VVx1MDAxZFx1MDAxNFx1MDAxZLx5qjTOXHLXREdOTSqGJ6gmSLJApmg5cFxyfbnkMo0j6U1cdTAwMTJJlL4/XHUwMDEyI8bBkkc5nJmGcG9cdTAwMWTd4S9dcn/0dnFgnVX33S8nkpLMJZL54lxu8bBcdTAwMDJcdTAwMDPnhmJEl1x1MDAxZYNfZJHQwICFVstEXHUwMDE3nqV8s+AlbUtcXGVcItLO/1x1MDAxNvw7N1x1MDAwZTFKtetcYiZEUkxEjur7TZvenWFr+LTJj7TYN1x1MDAxZs2TNH+lMDjkYNdpjlx1MDAwNdhWcDL3MfhcdTAwMGVKtFx1MDAxY1CG2iRaJlx1MDAxNOFcdTAwMTdxZ0YpXHUwMDA2k/LFXHUwMDE44v9cdTAwMDWjpdQ59T5icZhlOHp4XHUwMDFjkGeaKHDGpqdO9/DAPdOXr/Xr/UG5Qm26u315XXTIstFydyFcdTAwMTWTTDBcIqJ1R+ez7TIwXHUwMDFiapQwv5mMXGJcdTAwMDTYOuBcdTAwMWPStVx1MDAxNlx1MDAxNvhcctlUyKZNqfdRXHUwMDBiw2xW5VEtlFx1MDAxNlx1MDAxOOdIdVx1MDAxM/Pketc8Pr/bKvfL7pmNNlx1MDAxYsT+XHUwMDAyoF1ccrViklpcdTAwMTA/w/zVnFx1MDAxMFx1MDAwNar7t/lbQJymT2nk8qlQOiFaXHUwMDEyqFx1MDAxY1x1MDAxZcuzSS/UKdH0JvH5rqzrjmjJ083y7lx1MDAxNd00zf5cdTAwMWUvOlRLOFZcbkRxgyNEXHUwMDE4Ylx1MDAwMjQln1x1MDAwZrm5dlBHpz64u+0zI1x1MDAwZWZcdTAwMTfYxkvHbrZhLDFTOE8pvXmEVKRuOVwiiHs7jnRcdTAwMGUhfbl9KV9s73buaruictWrnTyWz8jXXHUwMDEzUolpgYVUM1x1MDAwMZNC8Hq9t5VcbmlGLpQzSVx0ZzmCfNvX8uyydn1Ht+TlQeW53+JcdTAwMGa90y8opFxmXHUwMDE3WEgpOK48WNJ69UbQYiU0I/KVXrebcK5cdTAwMTDS0yfq78+Fe/S2eSFcdTAwMWaGZfutVronfV74N1dxgVxyQlx1MDAxNdbUK0jCVZEjX5hIoDyKyLKTmb9jX1x1MDAxZp+Cxr7S49VYSqQ8X3p62N7UzE7d2T+2dvGtuFTl54F0XG5fnYUrbDDBXHUwMDE5XHUwMDA30CrGeGRcdTAwMWRCoWBL0Kh885rrsvxcdTAwMDbtSkCbXp5ekVRDkGpcdTAwMDR2IM+x3yp7KW9B6yPEqtNLqrzXMEjBJPJeXHUwMDBiICNdWW51emxogrlQgkjGMeI40Pw7ctVoe/nyN2StszT9xLdVZJSF/zi0ukL0XjGFyCfWhy9WOiFcXIi+XHUwMDE0XHUwMDE3ykUpICbTXHUwMDE1XHUwMDEwXHUwMDAxj0NhlefFX9kv2i6oXHUwMDA2XHUwMDEyXHUwMDAyXHUwMDA0iFx1MDAxMMpcdTAwMTFTYEKoyNp5IYQhhdRKglx0RXhGXHQpXHUwMDAxXHUwMDFlbFXPro9gjlxyaIcp8DkoXHUwMDExXHR2XHUwMDA01tJcdTAwMDCnXHUwMDA0KcUlZVxcxZSTIFxm/kOLsCri5Vx1MDAxN0hcZlaFUlpTqlx1MDAxMFx1MDAxMpltXHUwMDE24PZAXHUwMDE5KE5cdTAwMTTlgFx1MDAwZVxmNppXq2Cpao1gXHUwMDAzKIV5r4v03n+DuUrok6fnuLenTFx1MDAxMSAgSTRhbFx1MDAxMYpunaWoqDBcYkeaMlx1MDAwNdaO1jj4sqPvXrlFg1x1MDAwYkJcdTAwMDXmRILiY5NuJ7GhvJdJXHUwMDExRiUhzMfq6G7g1YO9hbBSXpBNgIcw6X6YXHUwMDEwXHUwMDEwhFFBXHUwMDE5jVx1MDAwNEYq3D3BQTFzIVx1MDAwMIpEKEnlxPtcdGVcdTAwMDBysVx1MDAxN5SH7kkpQvfj1PBWnMJcdIJ7dYv1pPtcdTAwMTFMvTfBYOiAd1x1MDAxOaKRXHUwMDA3XHUwMDA2Q4ogXGaKXHUwMDAywylcdTAwMTSriVx1MDAwZpymgrxcdTAwMGbXhoK5XCKCXHQxei+gmPi4Uo+6J6BpXHUwMDAxSkCHXHUwMDFlXHUwMDE3bGtDY+Xtr4WJx4xOfFxcXHUwMDE4N4NcYlx1MDAwNNOhNahcdTAwMTNcdTAwMTF+XFzv5Vx1MDAwNlxiY1x1MDAwNjraoy74ddL9YLy5lpx7Jbkoklxch7unvNngMIQgTqAuJkpcdTAwMWZcdTAwMDY7XHUwMDA0ZI5jijyAXHUwMDA2PHLvI739zOBLgLhozeBcdTAwMTlycni6549TV71g6DvMXHUwMDE1zrHs5dZcdTAwMWRY1zfbpHGmXHUwMDA3O/jXQO3a9LLwnj9cdTAwMGJcdTAwMDfs/MctnuePKZVKYLnelNxv17/Q8TrGXHUwMDE0zVGstb9VXHUwMDE1ffPINC/76nTQebg5q51cdTAwMTU/yo6wwShwXHJcdTAwMDGuwVxcR+NcdTAwMDBFXHUwMDAyLShRr17lb9D+T4P2XHUwMDFkTI/lp0H1XHUwMDE2XVd+oIOj6/ubXHUwMDE3q8ZQYLdU4obA95QmokaoWsi7IEtisJhcdTAwMTgyYaikulwiWFx1MDAxYiRcdTAwMDM4iypcdTAwMTi6XHUwMDEwV7xqe4Ixm05YXGZ+PjlVIUxcdTAwMDXBOLZAycNu+qolsFx1MDAxN1x1MDAwNNjNcppcdTAwMDWGOaEqvcpcdTAwMDOzQPVzx97Dm2tcdTAwMDU2w1x1MDAwNXb9XHUwMDA1XG7MhHb90dA9ZqxfXHUwMDE23O3ti2d4k1/oMaI7+lwi/Y5u4stcdTAwMDBepfpSXHUwMDEyv05PyyVz//Xp4eHHZbfGp1x1MDAwMVx1MDAxZdPC81x1MDAxM3nCXHUwMDE2Mlx1MDAxZoGJy1x1MDAxZcel9YWR9JqYnGCcNSD9v1x1MDAwNUZw5lx1MDAxOLiaJGbfeI2ydDBKySXBS4CiXG4tSJ9cdTAwMDGKVn/U0NfDYrTjyWD89sGrXHUwMDFiZqdz4cLgbXxcdTAwMDa0NvpNa7CVYFxc1UZcdTAwMWZvO/5cYsqeXHUwMDA0W6Og4d/f/v4veE587SJ9Structured Data Unstructured Data Connector Loader Saver Format Parser Printer Shaping Operators bytes events
Data acquisition typically begins with a source operator that uses a
loader , such as load
, to acquire bytes
as a side effect. Then an operator, such as read
,
transforms bytes into events with the help of a parser . This
effectively turns unstructured data into structured data. There exist numerous
operators that bring structured data into the desired form for a
specific use case—a process we call shaping . After shaping yielded the desired
form, the data leaves the pipeline in reverse order. A printer
creates bytes from events, e.g., using write
. Finally, a
sink operator, such as save
, uses a
saver to write the rendered bytes into a specific location.
Multi-Schema Dataflows Tenzir dataflows are multi-schema in that a single pipeline can work
with heterogeneous types of events, each of which have a different schemas.
This allows you, for example, to perform aggregations across multiple events.
Multi-schema dataflows require automatic schema inference at parse time. Tenzir
parsers, such as json
support this out of the box. This
behavior is different from engines that work with structured data where
operators typically work with fixed set of tables. While Schema-less systems,
such as document-oriented databases, offer more simplicity, their
one-record-at-a-time processing comes at the cost of performance.
If the schema in a pipeline changes, we simply create a new batch of events. The
worst case for Tenzir is a ordered stream of schema-switching events, with every
event having a new schema than the previous one. That said, even for those data
streams we can efficiently build homogeneous batches when the inter-event order
does not matter significantly. Similar to predicate pushdown, Tenzir operators
support "ordering pushdown" to signal to upstream operators that the event order
only matters intra-schema but not inter-schema. In this case we transparently
demultiplex a heterogeneous stream into N homogeneous streams, each of which
yields batches of up to 65k events. The import
operator is an example of such an operator, and it pushes its ordering upstream
so that we can efficiently parse, say, a diverse stream of NDJSON records, such
as Suricata's EVE JSON or Zeek's streaming JSON.
You could call multi-schema dataflows multiplexed and there exist dedicated
operators to demultiplex a stream. As of now, this is hard-coded per operator.
For example, to directory /tmp/dir write parquet
demultiplexes a stream of events so that batches with the same schema go to the
same Parquet file.
The diagram below illustrates the multi-schema aspect of dataflows for schemas
A, B, and C:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1da1PiSlx1MDAxM/6+v8Li/bpy5n4531x1MDAwNERcdTAwMTHvXCKrvHWKXG4hQFx1MDAxMFx1MDAxMlxmXHUwMDAxYbf2v59cdCpcdDFcdTAwMTFQkHCWWKUwmSQ9SffzdPf0xF/f9vZS7rhnpP7eS1x1MDAxOSNd65h1R3tKfffah4bTN21L7UKT73174OiTni3X7fX//usvrddL+0eldbv7fKTRMbqG5fZV3/+r73t7vya/XHUwMDAz1+qYljHpO2n1r1x1MDAwNKHE4eZz25pcXFx1MDAxNlJAXHUwMDEw40SAaVx1MDAwZrOfU9dyjbra3dA6fcPf4zWlskNgXHUwMDE4XHUwMDE2OLZcdTAwMWNojG9hye0+wKJ/3YbZ6dy4485EJN2x+/39lubqLb9H33XsXHUwMDA344dZd1ueXHUwMDA0ofbpsX1b3Vx1MDAwMv8ox1x1MDAxZTRbltHvz1x1MDAxY2P3NN10x15cdTAwMWLwh6BZzck5/JaRd8cpT0tcdTAwMDYkpoxcYopcdTAwMDGf7vWOVzdcIs1cdTAwMTBcdTAwMTRIXCKuPkNcdTAwMTGSK2t3bMeT63/Q8H58yWqa/tBU4ll1v1x1MDAwZlx1MDAwMTqg3O/z9DLawH1uXHUwMDE5ZrPlqjbit/WNyW3nUkCCmd/unb5XqE9cdTAwMWX+P/6tdrSuUZg8lPOzZrPLTvmdW82JU3NMNJk5mrl5Vv3l5lmDTseX3dtxXHUwMDE4UC3/7INeXXvWXHUwMDAyyCTjgENCIfY1SanbQ/h0XHUwMDFkW3+IUJy+qzluxrTqptVcZlx1MDAxZmJY9Zg9XHUwMDFkre9m7W7XdJVcdTAwMTiXtmm54Vx1MDAxZZPzXHUwMDFlOI791DK0esSZY/f1vNP5tuRt/qc9X3EmX6af//lcdTAwMWXZXHUwMDFizXRHc/vPdCdzu7Ml+4uQOGlcdTAwMTDc4HKXw2lKXHUwMDExh5hxIVx1MDAwMKBcdTAwMDBcdTAwMWH7kC41wIC834J/f39fXHUwMDEyxlx1MDAxMIbh5ldcdTAwMTgjkjEkoCBcdTAwMGKjXHUwMDE4r1x1MDAwZezcNa8/tS8pPz+B91pn/Fx1MDAxOINiLU1vXHJcdTAwMWNj81xiRt5FMLJSXHUwMDA00406qWtcdTAwMWZFMDVcdTAwMTasZGBgh2E7XGbb22GYj2FcItw8dcUg51x1MDAwNHKC0cIgNsyOboTZuHQ4qnC3pD1cbtPubTeIrdZccvtcdTAwMWOIcSZcdTAwMTCkiLJcdTAwMWSG7TBsh2FTXGYjseGkUk9GMVx0YMA8XGK7z1k4W+tcdTAwMWL4tPXYLWVcdTAwMTHpXHUwMDE2quZ2Q1x1MDAxOEtcdTAwMTCEMaKCfyZ2XHUwMDEwtoMwb/vDIEzznllcdTAwMTSGccrDrVM3jEmqNrFcdTAwMDSGZS5cdTAwMGWP+kWr0ON992hYhoNis5R4N1xm43fdMLRKXGYzpKFcdTAwMWKNt1x1MDAxOFx1MDAwNrFMQ0glUlwiXHUwMDAwICXxYWqKaW9DSypcdTAwMTDy8mO+n7xKTPs11bFXNUIvLb93ULdKqIt/+KHDP2fqXHUwMDEw0PjsN1DxXHUwMDE4gogvXHUwMDFlclx1MDAxMVx1MDAxZJzBe1Qt5c8uLkgu23auyvnE2/r7IdfX2DpcdTAwMDRpXHUwMDAyXHUwMDE5klx1MDAxMGBEXHUwMDA1XHUwMDE1/lOZ2npwJK/Wjlx1MDAwNGZcdTAwMTIpuXZcdTAwMWXMVpj1TO999UTn4kCsYrw9w+egQFBcdTAwMTJu9efBXHUwMDE0XHUwMDEwQSHB4lx1MDAxOeSRXHUwMDE4XHUwMDFkNK5cdTAwMWWPfmY7P2SzJKpaqUq3XHUwMDFmXHQkV1x1MDAwZVx1MDAxMMCAYVxiUUiuVSFcdTAwMDFKXHUwMDEz71wiSlx1MDAwMkBcdOJcdTAwMTGsL2WaXHUwMDExXCK4kExwJUzgXHUwMDBlveCCZFxicIx3uLCNuPDm8c5cdTAwMDeJOJ2Zc7qFXHUwMDEwwzF099leXCJQg2FcdTAwMWGHXHUwMDFhXFxcdTAwMTLBKEOLg8ZP65LzVr1zRFxc11x1MDAxZFx1MDAxNKzC0XnjNlx1MDAwNjRCxr8pyIDhQMFHhdUnbOug1mhEYIZcbj2JpFIwiVx1MDAwNeHePX+LXHUwMDE5b7NcdTAwMWbqXGJKqICbyH5MVfBXQFGnXHUwMDFh51x1MDAxYSM3XHUwMDE1VOFcdTAwMTf9qF2OXHUwMDA3h6cnXHUwMDBm7WuNgn3dKFx1MDAxYtfVXmra7/erOq9cdTAwMTCA3rWMXHUwMDE5OVx1MDAwM0aBabxRXHUwMDEwirFcdTAwMDBL+NTRg044k0KC3jVcdTAwMGL4XHUwMDE1SUC4gFmgt0nBSU8l9n+FOlx1MDAxYrbl3pg/n9M3M615rWt2xjNcdTAwMGZ5otJqSFx1MDAwN6mZpoOO2fQ0O6UrUVxyZ0bpXVPXOtNcdTAwMGVds15cdTAwMGZSha6uo5mW4Vx1MDAxNFx1MDAxNoF42zGbpqV1Sm/F8DLux9NYKI1oQCf6xiRcdTAwMWbv6d1nqIyFW6eZeykkpEj4OjHX/zXJ4bBcdTAwMDFzhVx1MDAwYvmjeKfRcS3fjqtcdTAwMDNLXG6Vhb3fdVKZlIZsoFxiKluIuiBGXHUwMDA0XHUwMDEyyVx1MDAwM9abdO4qtG9cdTAwMWbusvq+OGk/5ceOuNXwXTuR3Fx1MDAxNZtcdTAwMTBSMiAsXHUwMDE5WTz3XHUwMDFiPeikc1x1MDAxN8NpSIgkXHUwMDEwe/F2ICz+QuqCaVx1MDAxNWJKISiiWFx1MDAwMlx1MDAxNkC7d6hcdTAwMGJCQaWCqv/MfNaHqCuzJuqaXHUwMDAz6WHqynwldcVPOnNcdTAwMDFcdTAwMDBcdTAwMDQkMMc5l7pKXHUwMDA3me7loF5sy3L++MpcdTAwMDRcdTAwMDeVyk3CqYsnIVxuW8BmI6hcZkFMXHUwMDA12cwk9MeorNY4XHUwMDFiufj+pHz9aFx1MDAwZVhcdTAwMTeWyofkKJFUJmOtQonh+fmLR2GRY046k1x0nFZeq8SMXHUwMDEwpZic01mzSHBcdTAwMTSGnie9XHUwMDA02YSHl1x1MDAxYy5bV1x1MDAxODZcdTAwMDfjN1x1MDAxOYZxXHUwMDE4a7VcdTAwMDRCXGJcdTAwMTBbYjlOXHUwMDFlXHUwMDFhg/shK1xcP1XExfDm5GrwhK5cdTAwMTLOZXJruUxcdTAwMTKA1ePh66k9WFx1MDAwN5X1cm397FLmss2n+yfz8azVu+hcdTAwMWJcdKQyguNLcpRcdTAwMDeBlFx1MDAwM7FEnj161Fx0JzNcdTAwMDS2lswkXHUwMDE1XHUwMDAyUSZ2KcVA08q4bFx1MDAwZcZvkstcdTAwMDSINVulxFx1MDAxNCt4XZzLbG7qdtZ2XHUwMDFmmDuqXHUwMDE08PHx2ch8SjaXIfiFXFzW0HVUj1hV+sG4jFDOXHUwMDEw59tcdTAwMTOWjXPHXHUwMDAy91x1MDAxZaHlXHUwMDE0K/ZttlptXHUwMDE1a+VcdTAwMDRyXHUwMDE5RfElZ1x1MDAxMFx1MDAxMYa5hItPj0WPOulcXIawUnxcIjGH6oZzQkKVJl/FZVx1MDAxOGApKJWUXHUwMDAzXGZcdTAwMTfMMTIsuaKzP3x+LLsmMptcdTAwMDPyYTLLrpbM4le1gPiVeUB5RJxcdTAwMDazzvNstnrvnOTahcZcdTAwMDVcdTAwMTbsXHUwMDE021x1MDAxOFxcZ8BljM0m6iVcdF9Z7PG5lyQgIKlXXHUwMDBivqY68F1cdTAwMDXY3m5ty8KXS87yPIxjk0vK+lx1MDAxOZRcYpPF42izwS1cdTAwMDLYOT+365mOeXqUL2ZcdTAwMWaS7ZHDOVx1MDAxZflKq91xTZf1WlS92ltcYotwNKCKsVx1MDAxOSe7XHUwMDFh1m1EsJVZbPzUJuRcdTAwMDQpXHUwMDE1XHUwMDAxS5Tl/PjR7F9cdTAwMTYqXHUwMDAz91x1MDAxMLRcdTAwMWLDdm+YOVx1MDAxOFx1MDAxZiY+WpjjdnyJzZJFbJZ7XCJQtpFcdTAwMDTwzmS9bTmTJZ8y2fencVx1MDAwMFxut/pMq6JeSJZZTuK6h9o5ubUuxpjmoX52U5HjbrKZXHUwMDE2h+dx1lx1MDAxOCt8rppcdTAwMGVcdTAwMDGmwjdcdTAwMDS2qFx1MDAwNKFyTIb38CDDa7WyPdCA4T5cdTAwMWU0XHUwMDEzmOtcIjB+3kYpXHUwMDA2IJjjxePm6FEnnL1cYtjWcjpcZiRUYVx1MDAwYvqzM13rKqebXHUwMDAz6Zssp5Mytlx1MDAxMlxc3X0kljLaolx1MDAxY51VM5pcdTAwMTh0XHUwMDFkt75/NsjftkZxLmdSqIvLNFx1MDAwN0r7MWOQcelcdTAwMWLA85v0aFx1MDAxYWHMKFx1MDAwNcpwOWIsJNgmXHUwMDE3NSmRXHUwMDExXCJbNW/zM1c8XHUwMDA148NeZXhfOs6cPrSq+8W7XHUwMDA0clx1MDAxOY/nMlx1MDAwNLD6IUtcdTAwMDRi0YNOOJUpRXzPLuBK7WK1JVxiUEiG+Ex2608ks3XVIMxcdTAwMDH5TdYgSFx1MDAxMJ/yhIxyXHUwMDBlpVxcfLq1e33RK1PrOLd/XHUwMDA1RvuXI0eWXHUwMDFmXHUwMDEyzmZcdTAwMDSANJRMXHUwMDAy4L1GgeHNsNlcdTAwMDeLXHUwMDEwpHJCXHUwMDE5pNtTUadh0jku6e1iQ1x1MDAxN8adxWvoPo9cdTAwMTLIZlxmxft4XGJBXG6WeMVV9JhcdTAwMTNOZp7ic0YkUFx1MDAxZS1iwVx03i0gM1x1MDAwMlT4/KdHZutcIrM5XHUwMDE4v0kyg1x1MDAwMMUuradeXVxuoEuEZufli6uTQe+pVT52q5V7t3VQ3U94dThRRFwikFDbM5n53Fx1MDAxZUVmMiTXRrmMYVx1MDAwMJS3sVx1MDAxMVx1MDAwZvRjXFyWJ6d3w/xV/qY2ztc6TsO+vmFJXFzoxOPfm61wXHUwMDFkqnB+maXr0aNOOpshnsaSXHQhn9ksZFx1MDAxN3CVdrFaMqNcbrK43MVla6GyOVxiv9G4XGbGXHUwMDFhrWCMelx1MDAxML+4zdYuS/suPylcdTAwMWNcdTAwMTXyR5XyrUU1ka0km8nen1x1MDAxZlvta6JXW1x1MDAxYY44ViFcdTAwMDLYomVON9rR8GisXHUwMDFmNHI58sjOXHUwMDBmXGa73ddcdTAwMTJIZOxcdTAwMWRcIsNcdTAwMWWk8iX+iU30oJPOY2C2Mnx2kVx1MDAxM0twYTiDUMBg5f6fyGPrKlx1MDAwYp+D72suXHUwMDBinzyzSFx1MDAwZXunnFJpg/I8XHUwMDAxW9xg5+hDMlxydp/TNCCMXCJv5SuTgM5cdTAwMTZnKZ80jb1Xpis3T1lcYlxyybWUwbqOZvV7mqN06a3RcuVcdTAwMDArP997x2OUuVKaxlx1MDAwNFx1MDAwM6h+QcghXHIgx2uqkVx1MDAwM4JcdTAwMTFZgtVmrGg11qpQJ1x1MDAwMHlLWKvlaehz12dV/vZCZymt17tx1WVSr28vT1xyTeMpXHUwMDEz5SVMNo9cdTAwMTYnhuApnDF56fnvb7//XHUwMDA1ylxmpdkifQ==A B A A C B A A A C
Some operators only work with exactly one instance per schema internally, such
as write
when combined with the
parquet
, feather
, or
csv
formats. These formats cannot handle multiple input
schemas at once. A demultiplexing operator like to directory .. write <format>
removes this limitation by writing one file per schema instead.
We are having ideas to make this schema (de)multiplexing explicit with a
per-schema
operator modifier that you can
write in front of every operator. Similarly, we are going to add union types in
the future, making it possible to convert a heterogeneous stream of structured
data into a homogeneous one.
It's important to note that most of the time you don't have to worry about
schemas. They are there for you when you want to work with them, but it's often
enough to just specified the fields that you want to work with, e.g., where
id.orig_h in 10.0.0.0/8
, or select src_ip, dest_ip, proto
. Schemas are
inferred automatically in parsers, but you can also seed a parser with a schema
that you define explicitly.
Unified Live Stream Processing and Historical Queries Systems for stream processing and running historical queries have different
requirements, and combining them into a single system can be a daunting
challenge. But there is an architectural sweetspot at the right level of
abstraction where you can elegantly combine them. From a user persepctive, our
goal was to seamlessly exchange the beginning of a pipeline to select the source
of the data, be it a historical or continuous one:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nOy9WZeiWLQu+n5+RY3aj+5cZumbfcd9oFWURlx1MDAwNFS494xcdTAwMWF0XCJcYqKiXCKcsf/7XVx1MDAwYo3GaDOyqcraNyMrylBcdTAwMTaL1cz5zW824P/5X3/88eeh2cZ//tdcdTAwMWZ/xufQz9No79d//if8/Fx1MDAxNO+rtNyAQ1j3viqP+7BruTpcdTAwMWO21X/1+/52e/d41l1YXHUwMDE2lzPjPC7izaFcdTAwMDJt/1x1MDAxZvD+jz/+T/f/J9fax+HB3yR53J3QXHUwMDFkenI5XHUwMDFjff6pXm66S+M0SeJcdTAwMTjKPlx1MDAxY08rXHUwMDExXFztXHUwMDEwR+Dg0s+r+PFcYvzoT2Oo5DEt7PVhlU09ZVx1MDAxNaPRuX286DLNc+vQ5N2gwn1ZVV9W/iFcXD22qFx1MDAwZftyXHUwMDFkz9PosFx1MDAwMm3QZ58/nFx1MDAxYpVcdTAwMDc4iIfD+/KYrDZxVd2cVG79MD008DNcdTAwMDR5+PSyXHUwMDEw//XH4ydnOFWSvaNoXHUwMDFhoVCCwkmCIVx1MDAxZo7C879gyLOhXGJlXu7hUP5cdTAwMDON4b/HsVx1MDAwNH64TsCANtFDm8Pe31Rbf1x1MDAwZnbpsV19P0mCvWNZjGRcdFxmXFyWJanHS6/iNFlcdTAwMWRAXHUwMDFignly/bhbfpRcdTAwMDA7Q2Ms8ThfeNWtXHUwMDEydYLwv1x1MDAxZlx1MDAxN33vXHUwMDE3sVx1MDAwMk/ZXHUwMDFj8/zpkm2i65LdXHUwMDFjXGLgXHUwMDAx6blMPZWrXHUwMDFi2TrE58dJPVx1MDAxMVx1MDAwNUKi5GpUU6P6iLd1yqOyXHUwMDFkXHUwMDE2fz60++/rX4/jPG4j/1wiWSjF0iiDXHUwMDEyJFx1MDAwNXbk4XiebtbPx5qX4fpRXHUwMDE4u0//+z9f14GbcT5cdTAwMTF/XHUwMDE0o99cdTAwMTJ/jCQxIFx1MDAwYjj91fL/+qR/vPxXJVx1MDAwMIFcdTAwMWYp/lx1MDAwNILdkVxmjrNcdTAwMThN0SSOM8St/KPkT5N/irhDaZbFUYpAKOxcdTAwMTXhf/LZVfYpjFwicKgrP1v0f6R0Po6q3Fx1MDAxY6y07SRcZrn5VPaLNG9uNrFcdTAwMTNbsITWxVx1MDAxY9x8zuVpsulEXHSMN97fSPchXHUwMDA1huKhwaHcPlx1MDAxZVxywZX8dFx1MDAxM++Vr8Hscp8m6cbP7TdcdTAwMDZcdTAwMDImXHUwMDFlXHUwMDBm77dcbr17slmBX8XwKPyceVc337VPOEa9aZ9IXG5hXHUwMDExhnxcXK6PXHUwMDE09CRcdTAwMWLCTCn3s8xcXLXrMD67X/zFv8JAganeqCRKXHUwMDEwd1x1MDAxOMXQOMUgQGFplHg2llx1MDAxZqehxJPBPWglijF3NIrSNIYwXHUwMDE0QiFcdTAwMTj2wkJhXGZNXHUwMDEyXHUwMDE4yzzyh1/KQlxyj3Mj85H9l3ZBxeJoxVx1MDAxYe7sr1/RQrH4m1x1MDAxNlxuYWhcZkNI5usp2uuz/lx1MDAxN5goiqbugKQhNMVcIkCqKPaZOrB/lzqgXHUwMDE0dYfRLENQKIt+wmZhNEaTXGb9k5Xh5uBcdTAwMGKJJSmcXCLxT0js91mtaVxcXHUwMDAwS5Nukj8m6fZiXGZ+glx1MDAwNftcdTAwMDDUn1uw91x1MDAwNvXTrVx1MDAxOca8qcwoSmJcdTAwMTiJfcKaWVRcdTAwMTW3hDucXHUwMDA2my+KvXeX/li039DllVx1MDAxZq6O+/if12NcdTAwMDK9IyjgaOFcdTAwMTROXHUwMDAzq1x1MDAwMWzEjVwi4zh2XHUwMDA3XHUwMDBlISRBU1xiirDUs4E96jHS/XyHXHUwMDFls+xcdTAwMWRQSVx1MDAwNmFYgmZcYvrJpVx1MDAxZa1cdTAwMWNC3LEoirGAZrBcYmj8ZDhXK1x1MDAwN3aNXHUwMDAyRlx1MDAwZf/Ziv2NVq6141x1MDAwNTs3v1x1MDAxNFx1MDAwNio7XzZcXC2X4+ZTVo7EXGJcdTAwMDTFnqrIz7ByOPKmYpBcYsuywNbiX61cdTAwMTivT/rHKsaPp3goityxXHUwMDA0nCyGM1xmTZG3Tlx1MDAxOFxmUTAoQyNcdTAwMDSOXHUwMDEwXHUwMDE08Ezp71GN/4jZOIyXr/hjyFx1MDAxZFxy/TGaJoi3zFx1MDAxYvlcIlx1MDAxY8EwcGhPg1x1MDAxN3+/S/ZpQf0+42bHmzbd/79ATKNvNmtFXHUwMDFhRU9ccsUzy/ZcdTAwMDHAP7dsr4/oq2xcdTAwMWGBv6u1t1byXHQ3Reg3o4eAi9E4wbBfr7ZcdTAwMTI6XHUwMDE4lFx1MDAwN0puVW9cdTAwMWOllqNOh0T6q9sznCXvoPXAcVx1MDAxNFx1MDAxOFxiiqSeaS12h5I4QaM4gcG4XCLzXZGU/1xi44iI/Jday7ziolx1MDAxMS+DhjjO0lx1MDAxOMmy/yxcdTAwMGIlKFx1MDAwNsO/SVGrg78/8OkmXHUwMDAy9O35KfEmeuNI7ldcdTAwMDehLIpcdTAwMTRcIvakTDeH5y26frn9vqxXsf9i2qDnN49tYXe39vnxrz9cdTAwMWVlpXvz8Pf//s+PW1x1MDAxM1x1MDAxZjanPtmeuWmPIXfI01x1MDAxZvRzl8PvSFx1MDAxMlx1MDAwM2JN0VxmgyAkgsZfUPJTXHUwMDEzfDLe//X09bMgxDxRuefUgSCBZjLs13PqXHUwMDA1RonoUVxi5OFf5DlSTU6JbOxXxyBcbrlcclx1MDAwZWHI2/mKr+FcdTAwMDbfiTKAwVx1MDAwMFbN0D+dXHUwMDEyf1x1MDAxNJthfmPMi9bYM1x1MDAxMPiNST9cdTAwMDeTmOef3mNcdTAwMTJcdTAwMDV4MuDK7NenldaHUTNholxm+/IlsuSZp0p/pdNfXHUwMDFlk5hfXG6TcFx1MDAxY2EpXHUwMDFhiMRvTPqNSVx1MDAxZrT/n4pJNPb801x1MDAwN1+NJHH6ST71I0TiXHUwMDEybjlgiVwirFx1MDAxM8Y/b9bOXHUwMDA2X29+dUSiqV9cbpFcYpzAXHUwMDE57Kl//Fx1MDAxYpF+I9L/r1x1MDAxMFx0RXD2+cdcdTAwMGbpXHUwMDEwXHUwMDFhIcDYWPzr40fVX1x0SaooOjfQXHUwMDE57fwlb2rRo351VGKIv1x1MDAwYpVuheZxWVx1MDAxZkBcbmfvaFx1MDAwMqdwhkJZmkGexJ9cdTAwMWYwi8Rgndpvz+5XxCyUucNIXHUwMDEyITBcZkXAL8Y+PVx1MDAxYn2+t1x1MDAxZvX2XHUwMDA1XHUwMDA1J1x1MDAxMCxJ01xmXHUwMDBifmmEJZ7290JWPuqPvlx1MDAxZN1j/O+13rBcdTAwMGZ7o+9cdTAwMTiGQClcbiNcdTAwMTCKxVx1MDAxZevTurneMSSKoDSDgkFcdTAwMDORwZl/XHUwMDA23dA341IshSE48ZnKJX+iR47MTpeIwk9s4XggXHUwMDE20Vu53l+qboOk7licXHUwMDAxwFx1MDAwMVxcYlx1MDAwNGzYYy/d+ehcdTAwMWRGMDhcdTAwMDV0XHUwMDFhQymM/nllXHUwMDFir7Gyl2W1XHUwMDE4QpFA2DHkdVb2IFx1MDAxOX9cdTAwMGWbSpT+mlx1MDAxMtp8V52U81opXCI1vM+r/k35ri5L/lx1MDAxYlxi32/NfJJcXH22/cfckPqO0f8wLGLejEehKMti1GewyFgth7MhReJkffSK4dhkPPT8b8BcIpq6XHUwMDAz1lx1MDAwNZghlCZcdTAwMTGKIJ6l6uiu1lx1MDAwMzZgXHRcdTAwMDJHf1wiXHUwMDE4XHUwMDEx5Fx1MDAxZKxhhnkwhqSBqXqJTS9cdTAwMWRGXHUwMDA0XHUwMDE2neFPXHUwMDBiZn5D031n/1x1MDAxNmh6c+Ofnf2dxONcdTAwMWSvXG74fSxF419fMVr8NZS27WJU/1XTizAyXG41J/J/iba/wzzIv415XHUwMDEw+Fx1MDAxZEKSXGZcdTAwMDK3XHUwMDFkx8H1vkLZKVx1MDAwNFwiXHUwMDEwg71cdTAwMWWu/q3r/1xuXX9r35+d/X26/iSo+aI6XHUwMDFjOFNA+vGvj+tu18nS/mu4s0o+2+jNSsGC0/BfoevkXHUwMDFkilEsTsDMXHUwMDFhTj3JvsHzKeaOXHUwMDAwjidYXHSCXHUwMDA0SoVgz8b1z+o6SVx1MDAwMyDC3igg/a3qv1X9XtWJN+NcdDCTgFx1MDAwMsv+9bHSOY9cdTAwMDaUXHUwMDFhcVx1MDAxM7XRJZVcdTAwMTPGXHUwMDFi8su/hcO/Y9Up5Fx1MDAwZWcoXG5hwP9cdTAwMThcdTAwMTSjn4/rXHUwMDFm1nRcbrT8XHUwMDFkW/it6Vx1MDAxZmn6k1Tsc02nSJYmWPrr+XupyoxSXHUwMDFmZlRj1K518rlhzP0rbkpcdTAwMDY2nSBcdTAwMTlcdTAwMDZnUVx1MDAxMiVcdTAwMTn01lkniDucxVFcdTAwMWPDXHUwMDExhEVQ7Cfeofwtmo6hgG5cdTAwMTBcdTAwMTT9RkH8b13/retcdTAwMGY5UJR6211cdTAwMDf0XHUwMDFlpVxi9lx1MDAxM6VcdTAwMTl/sVx1MDAxMVdVqZ9HQaNEY5yYa0T2qydBXHRcdTAwMTKG3iiGYlx0YNWB5b7RdZRB7oCgwttSSFx1MDAxMmdcdTAwMTH2bav+PXe+oCR7h7JcdTAwMTTLXHUwMDAwR4IlXHUwMDExsPUvXHUwMDE1nSHuXHUwMDEwjFx1MDAwMYydJChcdTAwMWOg8ItcdTAwMTQpLDdmcCAyXHUwMDFm6H1A11x1MDAwNjpGJpIz0Xb2TuTomek9uYHrT48/TshIQNDWQE+ZfdaPVpQ8bUDVXHUwMDA1N1x1MDAxY0f8ekBu4/2WWMnSfP5NyPF4Q9m9tN7n3/7721x1MDAwMFx1MDAwNaNx5jegvGz9XHUwMDA1vUMoXHUwMDE0iDNcdFx1MDAxNlxu+Hz0TfhcdTAwMGZH70hcdTAwMDJBUVxm3lx1MDAxY1x0+Cv1YU5cdTAwMTW5IzGUxjGaQlx0lKCfIVx1MDAxNIXfkVxifKhcdTAwMDfFsDiLUVx1MDAxZpaJIEC2XHRcdTAwMDLYWoohXGKgXHUwMDA3JHGT8qWBXHUwMDE2XHUwMDAy5lxyxFx1MDAxYmZoMYb+qD/mXHUwMDBlJVx1MDAxOEBWXGKWgf+om4Q0jd8xXHUwMDE0VCNcZiPwj9PHOFx1MDAwNVxceFx1MDAxNKAw6Fx0XGJcdTAwMTd6OzJcbsyUXCJRhMZcdTAwMTFcdTAwMWFBXHT2w5HBhydAn1x0XHUwMDE2wrBcYobf9Ebf4Vx1MDAxOMt0XHRkXHUwMDAyOFx1MDAxMVx1MDAxZnWGYuxcdTAwMWRcdTAwMGJT21x1MDAwNPiPXHUwMDAwXHUwMDA249nQXHUwMDEwcFx1MDAxNZZGXHUwMDAw72dcYpr6sDdcdTAwMTKMXHJHYTSDXHUwMDAxwH+7pTR2XHUwMDA35k5cdTAwMDGEXHUwMDAyxFxirMaHiW2UpO8oklx1MDAwMPvPMjSDPUvig1x1MDAxZMXAXHUwMDFhQEFcdTAwMDR7gNBcdTAwMWZKXGJoe4fiwCTC8lx1MDAwMlx1MDAxYVxuwY3AXHUwMDExd1x1MDAwNIJQXHUwMDA0RsMgXGbK4l8zOppcdTAwMDTyXHUwMDA0ZouRYFtvJkuCbYCQj2FcdTAwMTjLXHUwMDAy5/crulx1MDAwM74hXHUwMDAya1x1MDAxOVx0YLSf1rjAny9gsiSOXHUwMDAxeFx1MDAwMltcdTAwMDT2llx1MDAwMr1/2CNB3Vx1MDAwMUVcdTAwMDUvJI3ST25B7TrE73BcdTAwMWFcdTAwMDadgFx1MDAxY+NgXHUwMDAyNPPxXGIxMCkg81xiOFx1MDAxMfiwzO12fCHho3AwXHUwMDE2I1x1MDAxMMBcdTAwMWTBXHUwMDAwP6zKXHUwMDAy0lx1MDAwNVx0XHUwMDAy4Fx1MDAxMFx1MDAxOFx1MDAwZeSFuVm/L+Ag2HVcdTAwMWGhXHUwMDAxg0Apmvhwujh9R6JcdTAwMDTQXCKGZVx0XHUwMDAyY5hno1x1MDAwM4NcdTAwMDNyXGZkXHSsXHUwMDA2gX4ofGDtaJhcXFx1MDAwNJadpIFZve1cdTAwMGVcdTAwMDM2nSUwXHUwMDE2IcFkWYBeXHUwMDFml6RcdTAwMDCAYkhcdTAwMTJgXG68IVx1MDAxYqVRjGCf7TDQMWDG4Vx1MDAxM0kommRJ/MNcdTAwMWT5rmxrnOfptnqD1jFv39FcZjBcdTAwMTHe40t/PauznGC6Ocd7IZA9TadGbOJgu1+e1Vx1MDAwMYhcdTAwMDfWXGZcdTAwMTgzlFx1MDAwMMj9pJKvO1x1MDAxZlhcdTAwMDBcbnA6XGbsKVx1MDAwMG/27Vx1MDAwNMzXkDpgs2KWeo3UMXdcZlx1MDAwNuBcdTAwMTmDhI4gXsm0osC0UFx1MDAxNMbgXHUwMDE0XHUwMDBl9oVcdTAwMDY685zUXHUwMDAxxGUhfH9cdTAwMTSi/ZVI3XfcRv1J9vauirx1vz/29k17XGbAMiA0nyhIYJb1WTutLSXa71x1MDAwNOYs85N5/e9cYnFgwDqTXHUwMDAwqVhcdTAwMDDPXHUwMDA0MIQ3XHUwMDFhgqGA4Fx1MDAwMbVhcUjiaPLJ4Vx1MDAxZv5QXHUwMDFiXHUwMDA0KCN88lx1MDAwMNBE+HSdJ+VcIu881Fx1MDAwNlBPgv6HXHUwMDFmxPbtzsa3PYhccv+DP4LunqzhXHUwMDBme5LNzaBfPHjt5YV/xNNq3n4u4pt5RSDWXHUwMDE0ikM/4KtcdTAwMTV0Qlx1MDAwZfTc2stcdTAwMTY2WZLVsTzNsXHyr1BQ6lx1MDAwZVx1MDAwNa5cdTAwMTNOXHUwMDAz8lx1MDAwN4gveaugX1C2SzuSQFx1MDAxMmGzJ3VcdTAwMTc/WkFx7Fx1MDAwZelgXHUwMDAyIVx1MDAwMNsjv/KpU0A7XHUwMDE44Fx1MDAwMrL063VcdTAwMDS/enzxmzRUTvO3nseRx8vDT1DN2yv+XGKtfCtYiL2d7Vx1MDAwNzKBdjz6q5VcdTAwMTJJ/GHBKGNcdTAwMTMvLTtMd0029Pw3lPKZYv1T6og9XHUwMDExg+bZ++dcdTAwMWFcdTAwMTcjOIqj31x1MDAxOFxufK1a+JVcdTAwMWLdaVxmXHUwMDE2XHUwMDBi4j/7XHUwMDE2rlx1MDAwZlx1MDAxZeqG3tRz/Vx1MDAwZbfd/6DMd3l3bykhMH1vKiFcdTAwMDbcXHUwMDA3nEXpr+euREAuXHUwMDE4OV6Ta8rUk2GZsWW5+rW1XHUwMDEwIPpcdTAwMWRw2klcdTAwMDDrLEVcdTAwMDLz8lhP01XWXHUwMDExd/Bua+BKXHUwMDAxu0hcdTAwMTH026z1e1RcdTAwMTR77amkL1SURVx0jKTwn37b91x1MDAwN1x1MDAwZrxcdTAwMDFGXHUwMDE4/a2hL1s/2cRn7b9PQ995mFx1MDAxY6BOKFxm0361glx1MDAwNrJYjXx9z1pCdPhLXHUwMDEyI0yr36p//UVcdTAwMTRcdTAwMTQjyTtAunCSho8uxJ6Ul3d17sxPMppcdTAwMDRxXHUwMDA3XHUwMDEzeFx1MDAwNMbQXGJCM6/cYfiKXHSF4X/251x1MDAxM9RcdTAwMGZcdTAwMTRcdTAwMTTeU/hbQV+2fnNPn539XepKvq2tXGbOUOxnXHUwMDFlb1x1MDAxY1vVuU1cdTAwMDYkMVuzq1o5m5u/3oqT/mJcdTAwMGb4RtE7hiFJkqBgLFxif1x1MDAxNi19j+l+d4FcdTAwMGJzh3aYiONcdTAwMDA5wOW/QnFcdFh3XHUwMDAzXHUwMDAx5rfe/op6++aWPjv7q/T23SdcdTAwMWGTXHUwMDE49eY3aDBcdTAwMDDYWXjT0lfrrzJcdTAwMTiTh0zUJVlvuUTH83ZcdTAwMTSO/i5j+0hjP6O4X1x1MDAwMNu/oyiMxlx0mkZwXHUwMDFjfaxcdTAwMGa7KC51R1x1MDAwMpqMwSRcIk4yP/OJxtQrlPhpIO/+5lx1MDAxMoLCXGKYP35Vd1x1MDAxZoTjz81cdTAwMWHZ4MWm2lx1MDAxYiF+3ODR+dRok6fZiuIkXHUwMDA3hzhcXM2EXHUwMDEz489Y/UhcdTAwMTBcIveDSlDuc9HfVoLyaWB4V1x1MDAwMdLCT15/pFx1MDAwZfpmoSaKg1FcdTAwMTDI08etfyT8+7/ML1ZiYbNGMFQ23lBjZfvLP7/iXHUwMDBi4IvviT/+teL/qmh/73N3XrnDXHUwMDFiPsRcdTAwMDKhMeKjysxcdTAwMWYn3N/3qItvNW+HY9VtuH96SlSAXHUwMDEwXUb7J3CSSJqgMTQmMVwiXHUwMDBluqhFXHUwMDFjXHUwMDA2kY9h8Fx1MDAxNlx1MDAxYZbG/Vx1MDAxMIlcIlxuJXw6QiiKYIklTpFBwMZ05Fx1MDAwNzFcdTAwMTmwPssgJFx1MDAxOWBcdTAwMTROITGGMmyMLlx1MDAwM1x1MDAxZmVcdTAwMTDgd+BPRDP0O8F5XFzcXHUwMDA3UfvjQc/fN0HvfDnGm8FcdTAwMTjgXFxcdTAwMDLOSrHo1/t6TTXS7INW1+t4XHUwMDE4rF0mw5S/3H+5XHUwMDA24ijxVFx1MDAwM99OUXyv+aHZO1x1MDAxNoX1OjiLkTTz5FHcj1x1MDAxOYqXXHUwMDBlIMPQoDX6Rlxm9X+IOj5JZDzZnY9cdTAwMTJcdTAwMTn5XHUwMDExXGbqXHUwMDBmPn0r1/iz0lx1MDAxOa9cXPfrklx1MDAxYcS3WVHgS7ylw1x1MDAxNMrggK0wX6/COz7gi+M4+tJaJFx1MDAxYq7aOlx1MDAwYtdvZTV+IVx1MDAxNSbh116AeVx1MDAwMiSFNZjMbUiVJe5cYlhyheIkzsJcdTAwMDK37zWiXHUwMDFmfCUhfkfDckpcdTAwMDJFWFi3+cpcdTAwMWRcdTAwMGY09FbhN+TBIDD7NCR+7yCyKMUgLPL6tz896vWX/U7coa0n5fNqkKtmOaqtv7nihWBJgvzWJ0p9ZGYjZIlcdTAwMDdcdTAwMTiDLINcdTAwMDBdXCLw20ZCXGZcdTAwMGJcdTAwMTlcdTAwMTTBkVxipVx0YELpMI5ZXHUwMDA0XHUwMDE2nGMkXHUwMDE1+lx1MDAwNFx1MDAxZFGwMlx1MDAxNWGWXHUwMDAxXHUwMDFkXHUwMDExy1x1MDAxMFx1MDAwZiGPXGZRmsRoXHUwMDEyialcdTAwMTCPkSWJXHUwMDA3YVx1MDAxMFK0/0PN7PueXHUwMDFlSr6ppyhYQUBcdTAwMDaeXHUwMDA22j9cZtWIxWxzXHUwMDFjaFx1MDAxMrXHgtREXHUwMDE1cT2P3lDUX8bVo7C7yzRJXHUwMDAyXHUwMDE27GAv7jPueFx1MDAxMsnC0FxiQbyppj/A1Xsl//+Kq4fiNFx1MDAwNbRcdTAwMTgn/j41/OGu3Ge1811cdH/nYV1vZ/VYQJVcdTAwMDHYfeYuXHUwMDFjdbq1WHNyXHUwMDFjbHZcdTAwMWLJjUJrSJW/ulx1MDAxNcJZ5lx1MDAwZZb+QveIJJBnxS4oXG48OZRGSHh3XHUwMDBivKfg7e+f+fnfZIExkFx1MDAxNzy9XHLyXHUwMDFmXHQ/0lx1MDAxNEb+/lwii1x1MDAwZlr/flx1MDAxY+rlw48xXGJ7+4mBKI6Q8KZcdTAwMTDs61xybDAx0r1xXuAnXHUwMDFlXfFcdTAwMDeMj4rdL/+QZkBv4Vx1MDAxNzkyXHUwMDE0RlE4YMW331x1MDAwZVx1MDAwN1xcenhcdTAwMDdcdTAwMTVcdTAwMDI8XvhVkOw/+206wJ1mYLrmN1xi/Vx1MDAwNqH/OSCEI29+4TJAIMB9P/NNfGrqXHUwMDEzx3GgMlx1MDAwYmpcdTAwMWRKjiFn42b2q2NcdTAwMTCB4Hc4QdDAtyVcdTAwMDHYXHUwMDAwn/xcdTAwMTaE4N2DXHUwMDA0Q9Pwe1x1MDAxZuGzXHUwMDEz/1FcZlx1MDAwMo46xmLob1xm+o1B/4MwXGJ/M6+GYVxm230z7FdjXHUwMDEwvXH2+uq0XHLcoV/LjoPrWPXL+2JcdTAwMDSC3Vx1MDAwMSSmXHUwMDExnMFRmn36PeNdUJ9i7lBcdTAwMDZ+nyBN4DhDfNeNXHUwMDA33/1NXHUwMDE2XHUwMDA0gCGafiPU9zfF8H5/p+BvXHUwMDA0+oElae+EOlx0gsVIXHUwMDE2Jb5cdTAwMWWBTvuGljVTIat8OjLKv2ZMNVx1MDAxZPzaJaQofochUK9cdTAwMDHPQVx0hrj1w1CcuCO68i9cdTAwMWPDXHUwMDAwXHUwMDE2ve2GfU9BKU4zd1xiyVx1MDAwMFxiRJBOXHUwMDFlXHUwMDFlveN3KkpcdIwmwZion12Z9i5cdTAwMWExNPr4MIPfaPTw8/aWPjv9u7SXQN58olx1MDAxMkFcdTAwMTJcdTAwMThGfeJcdTAwMGJBj1x1MDAwMT+slKFcdTAwMDKkVZ81XHUwMDEyXHUwMDExLZQj/mvrLrxVXHUwMDEwXHUwMDA3nlx1MDAwYlx05krAp6vcJlx1MDAxM3FALShcdTAwMWOhXHR41zv4h7995/13aS9L3sHH0jBcdTAwMTTJXHUwMDAwT1x0+5rHplx1MDAwMd3FXHUwMDEwXHUwMDFhJ/7ZqlJcdTAwMTJD0Ccp6d/ae//z5pY+O/tWef/Xtb8//e3WOoCl/vM+SfTnKY1r/lx1MDAxNZladj8w/dSpfpdOfcwt/fzSpccs1p9FWsT201xuhn51Snrn4sktIOnfXFxPXHUwMDA1xNV3piq8KPzzv26G9X/BglxmivjPyVDHvIYngvn5XHUwMDE4tltiYo2OIcrm8XCaXHUwMDA3hUkr6cOx7fXYyrerVFx1MDAxOa5cdTAwMGXBgGyNXCJq3Fx1MDAwNV9ej23CQq79ofbkPCT1h1MkXHUwMDE0y5OKR3jUkLjWkKewXGJPWsbVmsC2UVx1MDAxMT72t1lV/pzcg/7KaDitjZQ5gbNwdVx1MDAxM7ZqwTZew5xccntNqvilXHUwMDFkuFx1MDAwZeYtRq0/Z49cdTAwMTNLOauZlCqDfFxyztfcRZ6HOXOGY1x1MDAwMcfqcJiA66xZJePrWFCSqMjzXGJcdTAwMTmdYlx1MDAxMUk1gatcdTAwMTVRqlxygcBcdTAwMTQxJMA5bTTMK89GUm9OrtzinKvz0crFXHUwMDBlYI4sXG7Whlxuilx1MDAxOa6IXFxcdTAwMDLOPWtictRTXHUwMDBlN8Tr2ojbNlx1MDAxY8hcdTAwMTk8P1x1MDAxY47yXHUwMDEwmzVR4YBj0dZcdTAwMWJOwXopqFx1MDAwNsbgXHUwMDBmZltcdTAwMGZbIdf3PSHlmFx1MDAxMJ+SwcBJwPVreH40mFx1MDAxMZHAZiGupZOkTFx1MDAxNIFsI5GnvVwir8B10LCoS1x1MDAwNdXnUySXXHUwMDE2rbxcdTAwMWPbXHUwMDA3VkjWx1x1MDAxMDfPMeZtg0FNRYtRNVx1MDAxNnR7to5GU5lpXHUwMDE2zZpemuVI3eiItjmc4Fj9xZQ0Mu5oiIfCn58rYzNrXHUwMDAyIclcdTAwMWPUXHUwMDFiWs50qaHM1sBmR3c+qjxcdTAwMGJN3bm+9/DRKZqTa6Mg86jhwNi4x37xr+tXlz/Xrz78yn5nn+x38UY/OehcdTAwMDdHxoJcdTAwMDXX3aNcdTAwMDOcXHUwMDA3cpAjsV3Wapa8sVx1MDAwZlx1MDAxMdxcdTAwMDegQ3Jcbvby4Fx1MDAxNmC8WNRcdTAwMDT47OiJ26O3XGLhtZPHfqNn/Wpv9Lv6ZL+rr+w3/2S/+Vf2K9VQ1t7VIdCvXCI+yqz2bH+19lxyebTlT45ZektcdTAwMWbO2s1cdTAwMWVLTYyxNZCXbTRcXFOaQLTGW+d9Vids/SvlR0I+u25AL95Yp9lccia8Jeea7d2221xc26VaY4gjWWtcdTAwMTM4j2RcdTAwMDIxu8NGYqyI54O3mK68gYy48L1cdTAwMDDwXHUwMDBi8/B7PL/ahdbbhLSSdcdcdTAwMTNgc1x1MDAwMHbredhe34P+gkGeeVx1MDAwYlxy4lx1MDAxZpjT+fJ+pp/Aemeec1nPsOHTXHUwMDAwn1wiXHUwMDAxhmre3ENsfFx1MDAwNLAzXHUwMDA3uD9Cws0sXHUwMDA3mF1683zjXHUwMDBmTYDxXHUwMDFkhuM+WE1cdTAwMWbiu81cdTAwMTFq5lx1MDAwMvxNWCVFzrpcdTAwMThcdTAwMWW1VEligK9aSlx1MDAxMFx1MDAwZmO7XHUwMDFmy/NrX8bKqLheRPBvsT5cdTAwMDXzXHUwMDE54s6nq2ggdbjtXduA84/eXFxupvhcYqxLnlx1MDAwN1x1MDAxYjPx52BM+SNGg7FBW7n257NjJM+OQNbhWqHQTjidfMwmQT5rPVx1MDAwYoxRlMB8pDOQQ1TP1nBepFx1MDAwNsatt1x1MDAwMPtsk+zmISqgjXLUxDVxmVx1MDAxN3zvNkAvW81cdTAwMDZ2Z1x1MDAwMOz0fLpcdTAwMDXyhMyGo1Ww0YtcdTAwMDBcdTAwMWZcdTAwMWTANVx1MDAwZu5i2viLpNQsaFx1MDAwM7lEtaWLTbO1o25LjW6tr3ans02nUOBPXuG13lx1MDAwMq4z0E8wJlx1MDAxZFxc82q3WFx1MDAwNch5gHNcdTAwMDdcdTAwMTdjq1x1MDAwMFcopeVqw47EqaVcXPe3PnX9iFx1MDAwZvJcdTAwMDDbJ1x1MDAwMeZcdTAwMTVg/tBcdTAwMTZCPMFcclx1MDAxYthycCyen3MwzjZcdTAwMWGwtTrXT8GAbYBM1pBcdTAwMDeYrfMwNrA3sJ9cdTAwMDdcdTAwMTmC7ZVcdTAwMDFbeFx1MDAxYj2POlx1MDAxYk+gmi2RT237ZT5oXHUwMDE2YOdTmJWZlinkVJKlp/JcdTAwMDD7eW/+emZihvXe/M3GtDVimn5m/mGr28p780fhOFxyUfnM/Ekt096dv2nLop6556+f/3t7pFx1MDAwYlNcdTAwMDfgiK29OkbQN+RwubtcdTAwMThcclx1MDAxZnRBvGJcYsBcdTAwMTNf4LNgILeQQ1x1MDAwMjyqwbghr9MvuqxVmlxydFx1MDAxONNcdTAwMGVAf1HVXHUwMDA2+yAgRPdqIWfA40hVlI7GXHUwMDAwXHUwMDFjt4hWXHUwMDE1gZw2XGLQXHUwMDA3t4JyoFx1MDAwMtk2rFx1MDAxYazzNFx1MDAwM/JcdTAwMGXPXHUwMDA1fyuwL/LaXHUwMDA30r1cdTAwMDf9wHVwXHUwMDFiXHUwMDA0U22gX6Bv+Nn1nLPWXHUwMDEwRNf3vLtcdTAwMGVcdTAwMGX/NiykXHUwMDA151agr1a1TXDdXHUwMDFhvM+761x1MDAxOEJccsbgXHUwMDFjdIvAwPhq8Fx1MDAxOdxrMJdRXHUwMDA2+1x1MDAwN2NcdTAwMDJcdTAwMWN2fdBTeE5yXHUwMDAw81x1MDAwMP27R72471x1MDAxZvZcdTAwMDHnoVR6SpxV24V9wjG113GCcTvwXHUwMDE4fulcdTAwMWKMXHUwMDAz9Fx1MDAwYtdET7s1wUFcdTAwMWKIhdfzJVx1MDAxNFxcr1x1MDAwMn2ewZjA8Vx1MDAxNcCLNcDGXHUwMDFhfG5WOpxbXG77jDLNdlx1MDAwZnpcdTAwMDPHoID3YDxcdTAwMDBvwDhcdTAwMWLQT1x1MDAwM8ZcdTAwMGXa55ohSpWWrbKHNUrhfN3DZZ3Ma18ukFx1MDAwNT677Fx1MDAwM9xcdTAwMTcw527N4dwluOaY20qwbd3tV0ogsC/NgmviwnVA3Ta87idcXDtcdTAwMTOueVx1MDAwM+eh2Vx03Fx1MDAxN9BOXHUwMDE3L3JcdTAwMTJ2clx1MDAwMte14+jgWmBcdTAwMGWIeuH6LVxcXHUwMDBm0Ja6yjuQT1x1MDAxZeB5cpHPwXlcdTAwMGLs7CpcXD9i59W3eMKjlcR7wPnpLChyXHUwMDA0ymu0XHUwMDAw9i3XIYfIbYychVx1MDAxOOT+yVx1MDAxOeg2XFyL1lx1MDAxMMPmXHUwMDFlx1xyuN42h+nNPY5LNdxrvXWRrk12wXo901x1MDAxYe32elx1MDAwZdCbI7C3wJ9CWKVAV9FwtI2F5Hz1S1x1MDAwZVx1MDAxN0yXoJxcdTAwMDLsU9DxXHUwMDAzXHUwMDA2v8RcdTAwMDewXHUwMDFl0LeqNZHPwX407+IkYmK6I1x1MDAwZj6Dk1x1MDAwMHtq/V2cVFq9XHUwMDFkXHSG8Fx1MDAxOZx0at1O3rVcdTAwMTOapFx1MDAxMOb6dZz8JFx1MDAwNp3/cVxmgvpx0VvIXHUwMDFkO11cdTAwMDB/Q6yAfZ5Bm3Mn853+aVCPIVx1MDAwNzjonayD611wXG7oYodcdGg3XHUwMDE2XHUwMDFiyFx0vFx1MDAxZdBcclxy4IxcdTAwMGWP2043h6tcdTAwMWVfxlx1MDAwNT7rcOJcdTAwMTFrmm5cZp3+O9fxmlx1MDAxMCO68+G1dIhZtlx0zoVYgOCd/kJ9XHUwMDE0ur5xs02g/jdcdTAwMWRmwbmIcFx1MDAxZOB7XHUwMDEzzqExIVx1MDAwZVjIXHUwMDA1x4TLXHUwMDFhguPgPcBcdTAwMTnQ3my5qptcdTAwMGbEXHUwMDExXHUwMDBinpdcXNZcdTAwMTZgjVx1MDAwZfmxpDVq55tD7FhfsDCtse58gJ26o0FMJeB7iKNGh7GgXVx1MDAwNsYx0Fx1MDAxMHhON1x1MDAxZojV3Vo5cM/vj587XHUwMDE56PZWuWJcdTAwMWSYh1x1MDAwMK/lZfd4fXlvQlx1MDAxY1x1MDAwM+9cdTAwMWS4J3As91x1MDAxONh0clx1MDAwMbFcdTAwMGbOLYVcdTAwMThcYq4zh313c8a6viFGwj6aq1xygGODr1ZNXFz7hmO8zFx1MDAxZvzttu51nSD+d2t/vsy/w2BcdTAwMTTKXHUwMDFjXHUwMDE437mTu27dgFxcQTtcdTAwMDWO6+uagGtpwPVcdTAwMWJoNbRHmnVcdTAwMWRHinSypsNxw7ZcdTAwMDU87lx1MDAxYy5702F3t4eXPfOu17jBdlx1MDAwNPZcdTAwMDP0XHUwMDAwXHUwMDFjX2VcdTAwMWRcdTAwMTbbl/npnb3UujUwuj2dwvWB61I9eW0ue30/tq7P82VccpGLXFxcYpdranBsXHUwMDE3ubi8dvaka1x1MDAwZuVcbuI/esF/s7ros3nR5+ZiK7SLrWjjK29cdTAwMDNYUVx1MDAwM65cXHY4XCKeX+KGwG89gKNP4iW3vHtOXHUwMDAyf1JcdTAwMDO4XHUwMDA3eP1iZHfxIYc9zoCtgDEqaFx1MDAwYjq+kJk1tFx1MDAwN1x1MDAxZZjPhctf+T/YXHUwMDAzrZXari20XHRwrGKC6cI9319DucZcdTAwMDBcdTAwMWb/uXzfVkhoq97j+5pcYmN7n+L7jd6G7+O4qLW69Cm+i2pZiL1rx0RcdTAwMGVcdTAwMDN8p/5cdTAwMWPfXHUwMDBmOzv83vx1xFx1MDAxM8zP8X1cdTAwMDTs51x1MDAwN/Nf8SbyQ7h082DHOqyVxe71XHUwMDFlhzpcZoWvkXjRrY63XnQrXHUwMDA1r1B/XHUwMDE35WVcdTAwMWNwbrB/8Wt93+m3+L7QXHUwMDBlXHUwMDEyelx1MDAwNjnUXHUwMDFhcqhzh+OiiepcdTAwMGa+r1x1MDAwYvVcdTAwMThwpS7G2zxv87M4XHUwMDEzXFxcdTAwMWagb/hcdTAwMDcy1unDp7hSq+BcdTAwMWbqWFx1MDAwYljYp2TMXHUwMDAxOuZ+IGMu4IDcZ3RcZtNcdTAwMDFv+2D++HQ9XHUwMDEyPqVjLdi3XHUwMDBm5m9IslxiJPm1+TMq9pK7X3G7w3BloFfuQm+7NVx1MDAxMFx1MDAwMcpcdTAwMGXAdddIZ+81XHUwMDA32n2gXHUwMDAzVo08cCnIJ4BdMluz87fg+4uvJkHe0umIttbQKy9cdTAwMDHvnevrpd232lx1MDAxMH32eVx1MDAxYlx1MDAwMnlcdTAwMWHYx0azbmxcdTAwMDeuiVx1MDAxZFx1MDAxNl5sXHUwMDA3jFx1MDAxNbVcdTAwMGVmPNiOmzZP9HNcbq5Ntl7BNlx1MDAwMeg7mMtIWOTEWOxsRq1cdTAwMDBcdTAwMWXX6U3HQVx1MDAxZKBcdTAwMGLO9kmc71x1MDAxNVx1MDAxOZRcdTAwMWHjQ5zr9OUzMthcdTAwMDKc/0hcdTAwMDdbrZ1+Tlx1MDAwNm2gg1x1MDAxZsS19ExcIj9n51xcXHUwMDFj+EFcdTAwMWbMP1x1MDAxYbzlr7wxf1xcXHUwMDE3nY/mT5iOLr46f1x1MDAxOMt8idtcdTAwMTd5XHUwMDFkdv5w4mLnVYhr3Vx1MDAxYUC+XHUwMDAxZdSG/LnjpavsLZ7VvZ9rj7ys84Hq+/do936tYVx1MDAxN327xjqai1xy6mJcdTAwMTjQ9lxmv9XWeN9ga4DfXCI6T3jXmlx1MDAwNHalveBmXHUwMDAy7VxuXG79XHUwMDFmPUuwe9/cXHUwMDAwY9agLFj/sJ3JTEJDNPRTdsZcdTAwMDby+K6MK4gheqL+Os6+KePv641CmpksfS5cdTAwMWW6/ihcdTAwMWXamGutmdrJj+BH6D0/gvEvII8t9GPd9t5fdyvjqW/V+dwwfqdBXHUwMDFmuO38beiPXHUwMDAx/Vx1MDAwMH5cdTAwMGVcdP2nq9+NXf389urH451cdTAwMGbVnZNfdeiZ7ljXmFx1MDAwMHh/9blr6GN3flx1MDAxNDhudDGDLibW+Tzdde79nyfnPurlXGKwaK3TMTCHXHUwMDE28j3ot17ijJBnTUVcdTAwMTjX6+Jl9/ExqJPwfVx1MDAxN3+Lsmtsou5igN2rc51cdTAwMWJcdTAwMWNP53OT1/gn6HP94Jdf4iGAkyFgXHUwMDA0wJaCNVx1MDAwNb4gbFx1MDAwYvyuzIXXRCCWgc+AXHUwMDFkjb41Jod/Q0xcdTAwMGWMgWt1yFx1MDAwM+75JYxcdTAwMTnYXHUwMDBlblj3/NLBoI9iiOEjv3zS5je//M0v3+aX7j2/rLt40iVuXHUwMDA1dVx1MDAxMH2M8ZhXXHUwMDFmy4SxXHUwMDE1pDuePvDPS9yow57L+d/KJ1xy+Vx1MDAxYvikcMMjXHUwMDFiPXPJXHUwMDA3XHUwMDFlXHRw0bBNXFzP8vuYcWdcdTAwMTNcdTAwMDEuwvhcdTAwMTWm/9xYxHuyhlx1MDAxOeJI/KSsIYb9rvyC9YhEM1t/fZ/vxbtcdTAwMTFvMF2D39d17JMyXHUwMDE2PspcdTAwMTj0z7Fnsa9Odi6xMihbXHUwMDE3TFaunEw5Pvj1+LdyrfxcdTAwMWK4llx1MDAwMu1cdTAwMGWiXHUwMDAzX+U+XHUwMDE3XHUwMDAy5Fx1MDAwNuZxIJ+951tnXHUwMDE4k1x1MDAwM75/e/Fnrr5KSpBQh3+mr/JcdTAwMWXmXHUwMDAw/teY7SfjRuL63ViUXHUwMDAxbK2JKORcdTAwMGbKvV5ka+3+XGI+RDzEi9IrZ3e09io/SJdX6OQrhNhcdTAwMDWwTFx1MDAxNoFtI9Urd3psXHUwMDA3c1x1MDAwZbCd/K22/ax9XHUwMDAzfunwui3gxk/9YSD3etvl4DpcdTAwMWPr4vltgutP/eHHNr9l7OfLXHUwMDE4eVx1MDAxYpPUYUzykjPr8iXhVYZcdTAwMDBflrRcdTAwMGL37nIhXFzV+ZPfhV3S+Vx1MDAxYjhjo3WxYFxyNW7jLEBmkoc4i9bl15NcdTAwMTbGi5/EWe7b/Jarny9XZ+0hXpFcXHN03kMuXHUwMDEx5js7/tXVIUA/7v79Je9qwjpcdTAwMDNoK8XwmqeUYD5cdTAwMTDt5G2t4V28XHUwMDEw5q1gvii95C2N+5zd5pvl8VvrXG4gV8ZcdTAwMWbrXG4k4N9cdTAwMDOfRbj3Ycymiz91fnTnw+AwXHUwMDA3ZojmP1x1MDAxZPNrTTAu0zE/ldvRP4yHKEAmZf4zcm7YXHUwMDFh+n48RDpcdTAwMDO/gH+jRuGTnE16Uk/gdHlvWFx1MDAxYlx1MDAwMnRcdTAwMTPK0tm45ux1WN9jXfLEwM6iMK/a5eg7f1x1MDAxZOaqu89bmOO+5PlNRL3U4DRX/HySW1x1MDAwNjh6yZ3Cvy8xiC5GjVxc6lx1MDAxObrcPcSsSFx1MDAwND5il7u+2HRcdTAwMDXudaXBfPuTsX5zbtTWvyVcdTAwMGZcdTAwMDRwXHUwMDE08MWMO9/yRZjDe+CLeCdcdTAwMWLtbVx1MDAxZVxi+p0/Nz73nsy4XHUwMDA0wIpPxolN8v1cdTAwMThacoaRWOPrayrP7+nKXHUwMDA1b73X63k+XHUwMDE5XHUwMDFm7vDl4otgXWxcdTAwMDf4iPal7qGLkz3L6V99k4svYrbOQ63DRV67Wrau1kH/dvuOfFx1MDAwM57iOqxhsV3ySSxcdTAwMTjWy5DaYyxcdTAwMTj4i1x1MDAxY8Q38Grey1x1MDAxYlx0a/tcdTAwMDCO/NOY+juP8ovnUYBtvteTayxcdTAwMTRirJ5cdTAwMTmdXrjXWsV77If1lVpXv6QhWmtcXNpjXHUwMDFk/rdKh8mAn1x1MDAxMFc+Qlxc4sQwx/JcdTAwMTBcdTAwMDM+XzlcdTAwMGV839VcdTAwMWU9eX/oYkz3XHUwMDFjXGLGd2FdVFdXVOOXWG59ycVIr+VqQqijl9otRMPua7NgzKrLlYJxX+Yn3fMtqPevxanPcE1cdTAwMDFcdTAwMDbc5E47zt90uddrLEy75pC6uifs6o+er31cXGrErOvxzlx1MDAwNna1WvVcdTAwMDPWiFx1MDAwZjmqzqd4XFyrXHUwMDA3XFxqr6+o297UXHUwMDFlnZ/EUq71W1x1MDAxN7/34TrCw7jObnvf1nzgm5dcdTAwMThfNz/AwZ/a9nVXb3StSUUvMXHte3xcdTAwMWH0mzhkXG5rjFx1MDAxMvTRvnLQvqLaYzxcdTAwMDaBXHUwMDFj4Vx1MDAxYSuH71x0KIt61vlv/yyHtFx1MDAwMYfMPoV3gEMq79e5tlx1MDAwZYwtf+p+gI85JODkNi/qPyTuJyGvcUhcdTAwMTfWVVqwzjG81CtCX1x1MDAwMNZqd7WK0sW/XHUwMDA2PFx1MDAxM7a/1IXDOkmpw5j7PE1Xt/qoq0/yUdqzfJT2cFxcb57mhWbipdZagT5Tc3nt8sWifqlXhPpwXHUwMDE5Y1cr6V7rXHUwMDA0I7GrTVx1MDAxN7vaRPSKNy3EXHUwMDEzXaivubansc3nObMuXHUwMDA3da1DrC9cdTAwMWP5vpZcdTAwMDPWdjzEpbTHuFTaxaXETlx1MDAxN+37XHUwMDFjtXM9fuXQsGbyvlx1MDAwZeqS/3uoPdRcdTAwMWbX6lx1MDAxMWOay6s+f4Y9T+pcdTAwMTS7NbxgXGb+eFx1MDAxZPNhXFxPcufIY+78vsa1qzm51JZe9pe82Ihr7eKjTfnmeJuef0O8XHLmPW1cdTAwMDfXXHUwMDFm4lwia+h3XHUwMDAyjHBcdTAwMWZjuvBeXHUwMDAwWPP3cK9SXGLG7lx1MDAwMr34yfcq2WGjv8vVp7Lu6G/5d2/lplx1MDAwMSd8XHUwMDE3m85TsE9Aen5IPKPzY7p4xs09XGbd/SOXvKx5uOSFnVx1MDAwM5SFS53Sqqsxv8hPV6+OXewkcqmLvtjB8zW33Fxc7kW59KFf9cq4+I2HLq9rS9c6caij0HfsatGRS034fVxybifHl1rypm6u/V9r05UndcdQlrWLXHUwMDBlvV+bjnR9d7FlWI+tQVxcgTiBdffDWFdMgj7Etd7ZsK73yFxc8tlgXHUwMDFlXHSsWb7UXCJ3mKNcXPPx19pqeC9JV3u9XHUwMDA286wv97l044N9wPqwaaanxOVeoLSrWcZcdTAwMWVrlrvaaMhcdTAwMGK+/96TV/niQ1x1MDAxZVx1MDAxMb/cq1x1MDAwMznhLLvginTF3uSCpXZXI1x1MDAwZe8vOlxc9qC7b+ji81tcdTAwMWQ/vOD6/T1LwvW+XHUwMDAxcMxsQ6TjfFnHu3BduL9cdTAwMTbwxcDagvk0b+Ugwd9cdTAwMWLwXG7lXHUwMDFi81ri/37y1Vx1MDAxMvv44flcdTAwMTk0/IpcZlxmRzFcdTAwMTR7+uSWn/9cdTAwMTT8d5/YsN0kz5/W8Pc9lv/1pzWAId0/qSGd8ca0RsaDpOTAj245K8lJwF9ccnw7MFx1MDAwNc5cdTAwMDWv/Hxkmlxi/IRb6NZcdTAwMTRRuH1FhJTJcVxux4+mkuzEMl1tXHUwMDE2hTuUXHUwMDE3aP/A2rin56DLSqmK9Vx1MDAwZd95vKKpXHUwMDEyL+czVHCmM96UJZk/Nbtxslx1MDAwN1utKqVacupY2Fx1MDAxZFNlz/CybMo8t5A5R1wiasW3xv5iV1x1MDAxMWY6XHUwMDE1MXs09uhs1982ru056+ZcdTAwMTThwcxGT1x1MDAxM5OZLJnWo4+R41x1MDAxZHeHY3nk5LpcdTAwMDAjfP6bu0oqzJmM01x1MDAwNY/jXvy6nLBcdTAwMTJD/uUxgdNNxVF0z9TO0mjNcc9/ZcFgeCnlXvz6tVma42blpYqlcNLz37GkXHUwMDEz4kjihOe/aLIyXHUwMDEzeSW2jrk2OeX5r6Oo9fC1XHUwMDBl9/wg4dTBoChzJeGmz37BWIbJ5JXxj+aCznFzRdenxvSVdTOTXHRcdTAwMTe/cjmrknyOq0zfT930xeWm44QzJPaV8a9dXHUwMDA14Xg3QVHpLHEpuOTz33BEv1x1MDAxY/9UqfmSXHUwMDE3Vvx+NyqU11x1MDAxNpwrbfzl+Fx1MDAwYjNcdTAwMTFcdTAwMWRBXHUwMDE2xLkjatPX9p43s9Mrl0u4eVx1MDAwNTZJqMq5m762v0BgYq55ZfxcdTAwMDdcdTAwMTdsXHUwMDEy75pcZiq9tr+yIDA88kqH43pacsJ5td2NXlx1MDAxN1x1MDAxONE/clF81FGsQr3JhiYj1ZtReW6cgsY3qnMuYEFtTIyRclx1MDAxNLbIRlha7LK0XYJq8cmS1efYukyrXHUwMDE3+89yJi9suVx1MDAwMYZmijd0teE8PDlcdTAwMTE+lbzilJ7WnJZg1KrmXHUwMDA0TjpcYlx1MDAwNE9cZqssrZpeX61781x1MDAxNX9Ct9PkxVx1MDAxZbOmXHUwMDBiVUc/bMSIxjNcdTAwMWY97ecnO5TJlaPiXFxfXGazTVx1MDAxNFZOw+FNttbb2XDf19k+OTBIjOderHWZTDlzZ25bN8vD03qRkkZPIKdDbptcdTAwMTTVLN7PXHUwMDE2fNtYXHUwMDBlXbPOmF0uRd2syMLdvehnz1x1MDAwYlx0XHUwMDE4X7GOZ419poujXHUwMDEx8tqM5sR2KJxyfUSvT7NhQ1x1MDAwNr1cdTAwMDDZN6RXXHUwMDFk7fNAt0Vp/WKvXHUwMDEypbaKXHUwMDAz2M5tXshcYlx1MDAxMix5Zjbi1KBcdTAwMTL0ocHn61FcdTAwMWTOM3exmlx1MDAxZWZb9qhcdTAwMWGrgYu82E+aN9x1MlrXrlwiI6x/nJ+caeLVXHUwMDAzd+SxtIRulpI588j5rp+HXHUwMDFjOjph20R7sXdnxeZyXHUwMDFl7FCw8U6zsbFMcC7LhlvT1vM+j1x07HnK9vtesVx1MDAxOazUXHUwMDE3crqRVtrAkVx1MDAxYWV0kLFcdTAwMWFsP9usTXXIOVlzNKpdTyojYzTbpIydb87D/XOR9EdTbr3qS4Mzkk20fqD4KCVb4iRgk22/9PpcYr7fZf5i5WTD3jZcdTAwMThcdC/2I19ccksjlC1hYE+muzRvpuu9XHUwMDEzt2xvljmTou/uZ80sMIyDXHUwMDEwPlt+gVx1MDAwZlZi6ZlSathL2jCXVD2nuIO3suXFaD72V1xmUoyMbfpcdTAwMWMmXHUwMDA0Pk8yZJfwIzJqK/SMl1x1MDAwNrpL12thI03GszDnSMlcdTAwMTHcejLytORcdTAwMTZDat5cXCFDTdjKXHUwMDAwZbj+8LyhXHUwMDEzU6FcXCXDXHUwMDE5uuXknjEsMOzM0uORnDJ+gVx1MDAxZFx1MDAxMnKxusWTZG6alLDmq424qvfkcIieSdVcdTAwMTVcdTAwMTcjTu+T1MGpZ06O44x9XCKmyCZFsnVyu9dcdTAwMDepl+S1pYjqPj40MYbNsaWtKFlqjK3S3/c3iTlJ/Ll9i39cdTAwMWJkrFxmYslcdTAwMTJb7UBuzEpcdTAwMWXG9HRim6wq+/F8d6JJ2z5ZifnCXmjSMVx1MDAxOXGeOvF0ZltcdTAwMWWYulx1MDAxMYpROXV2U3ys4qmFZdnttUyDsSy15sZzszGQcWjUQ43WXHUwMDEx7GCXzdJcdTAwMWFXW9zdimQ8nJcoNzk/x1u1XHUwMDFjKbIkkKJXYUuc7Uc6kLthsiZcdTAwMDXKn7nKPm33NNtvmbkqXHUwMDEzfVxm2SeE/HJ9wfVNrlx1MDAwMbpcdTAwMTAgWF61pH9cblx1MDAxZCdeS1tBXCK3qMf2XuCxzm25cj1T1FxcXHUwMDBiNuyw3lZcdTAwMTTvq0PAW1NsiCtAeUKiN1kzz4V3MDKUkSR42kDgo8lgVuKMSUiRW1x1MDAxMbh9dFx1MDAwZeMk6Fl40rNGZ7/OtzdcdTAwMDN1jXJqjcE453PGOeO8R1x1MDAwMUxny6hcbpp2IFs9dE44va32zE7x3K42rVx1MDAxMVwiXHUwMDE2otlqwszYxvXQ2+sz3kaR/nLBO9GMQudcdTAwMWKUoDI1aaTidrzqdqRcZiVhZLCkTOzT7YBcdTAwMTTmJFx1MDAxYiRDRlxmi0pRXHUwMDE1eaeMhCFcdTAwMWFJZ2E+8ykjm3ObhItW4lxmN4feKCHQcc/WnFxcJD3+vHNN5Fx1MDAxOeaP7FxmXHUwMDExUl5LXHUwMDE5bGlgwvIwWJpCezykO05RVUnxXHUwMDE28u40W7Yzd4XqNT6Nt1xykOjQtjjMxKmBLdp8/7TYT4bH+V5Oc3eYXHUwMDAw4H1hO4vGMsfcwIpYdFwiXHUwMDE4draI91tcIufr4LDB9/XUXGbo+WBlVlx1MDAwYjbDmPC4mGZHReMm+Zyg7Uyut4Z6OvVWMS6VXHUwMDAy81x1MDAwMktcdTAwMGaSkmgmwOPAVfXVaT+s11x1MDAwZTbezZIgWGnU2Kx64SC3+rGo23460Vx1MDAxY1x1MDAxNFx1MDAxOa80XHUwMDExXHT3zlxcpVx1MDAxY0bUxrpcdTAwMWROj+NcdTAwMTJNsXPgXHUwMDA15Dk8zDN7vlx1MDAxNjH9hT1cdTAwMWbzXCLPK5k5XHUwMDE5x2zrTZcq8NExXHUwMDAyafVxTa/O02FKL3F/JVa4L272sb3LXHTZXHUwMDFhy1x1MDAxZY5cdTAwMDeViTvGeLZUUdqxXHUwMDEzmnjBr1x1MDAxMKHhz1xcappRzFrWkNbbXHUwMDEzp1x1MDAxZs8nu8Lc/qHMLdJl8LWvrfKabdljY/dcdTAwMTdcdTAwMWLhULSKXHUwMDFiXHUwMDE5XHUwMDAzIe/Nxi1cdTAwMTX0ttJYc19wosRxRyNpzO31XHUwMDAzpZ9cdTAwMTHOXHUwMDEyXHUwMDFkqlx1MDAxYVx1MDAwNlx1MDAxNT/JttRmf1DDiVhTpyCNXGaN7rVe1T9sWFx1MDAwN6OtUlx1MDAxMou+vK9xXHUwMDE37Vx1MDAxZNSJOvXVjFx1MDAwNvaOemX8vMVPwfhPo1x1MDAxM1tJ3MlcdTAwMWZs1/tpuVx1MDAwZlx1MDAwZedcdTAwMTSjkFx0XHUwMDE1XHUwMDA2XHUwMDE0cF35xFu3zlx1MDAwNsG5YDvc9Vx1MDAxY5ygYoFAdr1cdTAwMDA/+PNWy5Gt+2zNxaEgTFx1MDAwMVx1MDAwNzhT+Ip1Ki+U2aNTk/HZUrfh8uDx+6RZj1fhXHUwMDE40/KAXtVqUFAkn4xcdTAwMTiNX9Kr7UmrJ8lcdTAwMGJ+WY3OPM1NR7pcdTAwMWTvT8BqmYlRXHUwMDAwLuVcdTAwMDMm1Utplj1cdTAwMWFab00sXGZcdTAwMGafUMZKZVx1MDAwNFct+2PiyPfPNUf4U1x1MDAxOXFfcj1jLXIs2DWsmVx1MDAxOVx1MDAxM6VdokM/XHUwMDAxki+txz0nYfa0bURbfUIlXHUwMDE0ilx1MDAxZGt5oGP7aDfDo/VcdTAwMTbZ5UzJzvtxPnxh7yvETFVcdTAwMDTg48lcdTAwMGJrx1x1MDAxZkbbXHKz2VwiM02vIE/BXHUwMDA2luVcdTAwMTWjiarWp1wiI7KVXHUwMDEyWvpBm2Fb5Vx1MDAxNouCqapMXFxha/DUqTbqgK5E3LP6ZT+rkF25XHUwMDFjmom7w6qaQLE02cSBKuyk/j5cdPlcdTAwMDFTXHUwMDE3rnG2ns93wLFgcspcdTAwMWFgUTym+fwwj+Jcbo2M7MxsXHUwMDE4KVTdXHUwMDA1Nlx1MDAxOfSGXHUwMDA3Y1x1MDAxY+fbOohcdTAwMGWjvlxcTlx1MDAxMt7EXHUwMDAyhHy5dljKmX49sJreXHUwMDFjXHUwMDBijf1KwTAtwEeLs99cdTAwMDNq0+NcdTAwMWFcdTAwMTOjXVSuT47DRdnAXc6RMzNcYvlcdTAwMWRcdTAwMGY2OOJeyKMmXHUwMDExXHRcdTAwMGV4WlCQi3O9OWn6ei9Pz0vmhJ1cbqad2sdGoEjCaMZLP7VcdTAwMDfQ9pjsXHUwMDAyX26Yxpg0L7lLlGykOSFcdTAwMTB0XoVcctf3h7FV9DXD0Wg2VFNcdTAwMDYtfCPChptcdTAwMDU+Q5IlVm7OO1x1MDAwYlx1MDAxOP5wsVxc9lx1MDAwN1aMli99Klx1MDAwMF1lilx1MDAwMnQkaLDMvUVcdTAwMTO4bOPEuGmcM3dA0CFYT2in9Fx1MDAwMTBcdTAwMTE+76RcdTAwMTQ951x1MDAwMsHndkFzmI1ZppU99vV9mSXqWm5cdTAwMDdcdTAwMDZTTTdcdTAwMDOsXlx1MDAwNOGMw1k86Uu0tN8nx7XByWJpXHUwMDA1is6zyjSVhu1sMTxcdTAwMGZGybNtUWSUXHUwMDFmKFx1MDAwN4B3x5iQuUnR7ObmKNSmNnFO+rRPL3tm5dOSO1pcdTAwMWOmh43bp1aEajU03p/Phu1gZD7vb3jpT2qWSTNcdTAwMThbhL/rb07pMlx1MDAwM/7BJNzx+Fja2eWM2eVcdTAwMTbgku5umWpW/XzdxsCC8yTax2JTIc6oT5i9gUIyXCJbjjfUhji6LN2Opid1ZjNcdTAwMWVcdTAwMTFPz+ZCzFx1MDAxN+xcdTAwMWHBZVx1MDAwZq1fQLqllFxcz/U4vCh2XHUwMDBia7je9eZJWI63vVx1MDAxMTYu+jEzRmYrWrVcdTAwMWJnMvDCg9M/zSaollx1MDAxMC/sUKCcuf04SiBHJc9YWVmMoyzNIWlxNVvOc4eOono5XHUwMDA3XHUwMDAwXCLu7GpGT1ctTzmLZZ9ozj3urL3Q+5UmuVA8tiQursA2XHUwMDFlj3NcIunLu31vUi2TSMjPNeBJ3OZcdTAwMTCvQo1RSlLEc0JcdTAwMWSf/SDVmpfj21x1MDAwYmGnX1x1MDAxMa0t5WNcIvOHXHUwMDAzumyH9aFcct3T2Vg59WIxr2dJnMZCYKVcdTAwMDOhJFx1MDAwZb0lmW+PSqu+wM/12lx1MDAwNE4lvlx1MDAxZqRHfbo+MmOHIFx1MDAwM5X096OhgUvqPjuqJVf56XLgqcSKNfhGmpxTLTv1Ni9cdTAwMWN2XHUwMDFiuCRiqzbikU5U0qGPXCI+mvZxieFVPIubXHUwMDE5z9SWJWrGQlPJpWoheOFcdTAwMGVe7mPKZdK8XHUwMDE0taJFT1x1MDAwNc2fWG5g76dqMkJcZmBcdTAwMDayy7hcbovBXHUwMDExo1x1MDAwNlt0XHUwMDFlnaRcYsPGwX5cdTAwMGXsPTBU7YAzVqn7Qu9Dc3yWU36auMbxgI75vdliflx1MDAwZvPjXHUwMDAyx1x1MDAxOGA2zdprXHUwMDBmvEltmP4kn+0jvicg8pjjR/VgLnKLnphgLlI+V1x1MDAwNIh3rlx1MDAxOdeyXHUwMDE1qmjAXHUwMDA1TUV78nG85rVcdTAwMDM11GOWJMssk0l9JdZhXHUwMDFm0Fx1MDAxZtZft2u3qF+s3VxcXCJSllx1MDAxM2VWrlx1MDAxMinlncylXGaSXHUwMDA0JCpcdTAwMDP+XHUwMDFmukrcgb7aTdNtXHUwMDA0kINEvG063lNatt3wz3HjuHZcdTAwMTM2XHUwMDE5r9faOuZcdTAwMDBcciwsf41IQFx1MDAxOSpANS1dXHUwMDE3U/F0zJl5Mzn60eBcdTAwMTQvJkJTXHUwMDFl+0tA4LKJ89LXjuG6NVx1MDAwMrlcdTAwMThcdTAwMTDq9kxcdTAwMWT5XHUwMDExv1tuVnrs11NcbjhcZuaCnzgoMciGsL6axTZcImfxfjDsT1ZcdTAwMWMxYFFccuVajWtcdTAwMDaj56ZCkTeSXHUwMDAy5qysd1DONq7AYMO2z47YPXWaL0SOmexbf+kzmidcdTAwMTdccu2qxrm/XHUwMDFk9MeiuDRcdTAwMTN8IdeTvslcdTAwMWTIQlFe7Mk5ucp1lpvz0TpcdTAwMWWF3Mwk5L6uiCbgpo1KXG69lkHjklx1MDAxNcTAmIK1OKhmPEtcdTAwMDd04SYv9sa0XHUwMDE0hG84OudH55lvNKtcdD+NZ8tcdLvmXHUwMDA2+7O+XHUwMDFkMFx1MDAxNE6KyoTdjOPQ7Vx1MDAxZEZtWs1TZKHPVVx1MDAwNZP952vKj1x1MDAwNIWXXHUwMDAxPVx1MDAxZs/5KFbRtV155XE/VonebLJY+r1cXLWE/SmeMbNzcKwyk6XwXHUwMDE5Z1x1MDAwZVx1MDAwN8p+2DdexNfMwbiXjGtbMYhRoqexupmyx8zDWlx1MDAxNcfxaXhIsqjxgolHR8pKzZflcu1agTAtx2K6oyeHXHUwMDA1prWjhfA8jmaZhcAkXHUwMDA203hcdTAwMTXuXHUwMDFj8FkoI4NcdTAwMWVcdTAwMWG42zxcdTAwMTmdzb3s9fBjwaycXHUwMDE2XHUwMDEzp1wiK5XiJsr22GhcIs+zstG941xiocvNirGP8nFhtOuJKViTJFxcXHUwMDA12kxcdTAwMWFcdTAwMTBBf8ZKXHUwMDE0Klx1MDAxZmfTvJ2OWDOfzVPGqMaLfrluRrba0LlaXHUwMDE4w6Mm1o/Yp1x0jrLlXFzA9dBRXGb9qE16XHUwMDFlkFxi4JWLlb/d5NR+No3xosXCJm6T1GtcdTAwMGXrPu5lh1hZjiviOOuj7fwk68m6j8zCYkvU/DDiXHUwMDE5ZbFcdTAwMTPGvMlcdTAwMTeHWUb7qyEzMqdHqcfPbX92XHUwMDFjk7NxXHUwMDFmW5/lXHUwMDAzeutDaqVtjYBcdTAwMGZcdTAwMTnPmoFcdTAwMWbGcjJEokBuT+h81rBKu+2jSOMpedZG/lx1MDAxNFx1MDAwN1RoYW1onJueONycTPcoRTfRZD8oXHUwMDE2m3i4XCLCJbVpK3rtVEeDOGZVXHUwMDE5mJXEc0O3OWp6IGirg6RilHpcdTAwMWHb1s6xokHfaaX6xi9rLFx1MDAwM/hlkkVMUeRcdTAwMTQzZSi3uDOv9LVYIfFqNVNHkpPsuULEcv9cXPNahFq4U3E2MSxScMHEQCtiPuQtlduzXHUwMDBiYa1MsvHWNVx1MDAxNVxyxpW0XHUwMDFkTslrMVx1MDAwNs5G6veP42hd0GY9X1jilp1cdTAwMDayu1x1MDAxOFx1MDAxY2nOcLNcdTAwMWI/xTen1qjmiii1WJLhtqmjR6flXHUwMDFltZaDZJjz0qShe/RcdTAwMWNZrIfIyGlcdTAwMDWGXHUwMDAzPlx1MDAxN6cn3vE4NY47kitHKpWOljvU3I3b0i9C+Wb9SyVcdTAwMDTuP8VNjVrdnFwibyzRh9Im3YG7XHUwMDE17HQt5+axXHUwMDFhiYZcdONFgXLwaUc3gb1KVqXkbMyEXHUwMDFjbJCpXHUwMDEzhmSF1sdcdLtcdTAwMWIlypm/kf89Kl3jXHUwMDBimNC6XHUwMDAxPWNRseHEU2Rqa0ybXHUwMDEyOtWbL5HTfH8mXHUwMDE4P1x1MDAxYk1cdTAwMDQvleudTNklxmZcdTAwMDN+KaxcdTAwMDaLti5cdTAwMDa9bd+sht4g6vdHm+W0SOrZXHUwMDEyIVx1MDAxZfdOXHUwMDE0ZsAnssD1+3yYr/E6m1x1MDAwZVx1MDAxMSz39k6L5kI0XHUwMDAzhpic9XCJ0oJTslgsp+tcdTAwMDSvg/o0oNdBXHUwMDFib7jhcjZcdTAwMTSLwtltQnROVLdxXHUwMDBinlPPvLLneG+EjFx1MDAxOb/hiFx1MDAwM1x1MDAxZvruQtHKU3Z09PmkXHUwMDBlVfa8XHUwMDBlybhcdTAwMWZU/VXOXCJcZolqKn1cYnfbc4uu/H2+UM7IgSeXXHUwMDFhV+ereTNcdTAwMWU9y1x0jIGveDSZUFx1MDAxYjk42k8w4TiaUSPrrOsnb0d6p7lKo7uzm8+stGKLqj9cdTAwMDGskMpqjlx1MDAxY+2CYmWsZv1QU33HOVx1MDAwZVc9dt+MyMFtfEiAfvrBXHUwMDFjj3qeXHUwMDExXHUwMDE1LFKSxJzhrWWULNkyQvItt0BdLdn30Fx1MDAwMZPOl4AxLlJsPK75yreOm9auhb5axcaOOajNqX+eezF5XHUwMDEzl1x1MDAxNPgjuMBcdFxcyjS8iK1cdTAwMWJ+w1eL3WSwNVx1MDAxMabkK3lBoJPJKD1OXHUwMDE3mkufpzIzKFx1MDAwNXs92lx1MDAwNurCmFx1MDAwMW517C1cdHRv+smwvuVVucNPwFx1MDAwNpeoceKzYbzNtkxcdTAwMDNcZkNaKmPV2tP9xLXNtdruXHUwMDE3XHUwMDAwa9kmXuNrylx1MDAxOfj7lJRVXHUwMDAwVcomyaTBjd9nWbI5Zlx1MDAxNEk4h0dVPCFmtOgnLbcjNVx1MDAwMUetaHxaec0yWopcdTAwMTRcdTAwMGb4RzgkXHUwMDEwUmZcdTAwMDIp3tQqdUqm7DbeJti5XHUwMDE4P05+lexWajlcdTAwMDCURrdF3/CLfsBuT0BokCbznFCrXFxG2C9ZNlxcJ5K0nuyJ9XpcdTAwMTLmpezZI7/cZSk76897rlVcdMTNnvHchsuQXHUwMDFj2LdcdTAwMWGbn7EjbpV6s6/LLOVcdTAwMGa5rdK+5lx1MDAwZvP0MFv1sHzcO+hiO+3v+1x1MDAwNLVcdTAwMWImhaqepsTpXHUwMDE0e9KNXHUwMDFj2+dJaYBxRuGpPVx0uJ3mXGaHqdhcdTAwMDbQXHUwMDE2p46wsMiG7ME5ztXhmlx1MDAxMeba0VNHQ7Nv05afzZxcdTAwMTLd16zo7eimWlx1MDAwMlx1MDAxN3YpncVcdTAwMWJdz5FcdTAwMTUy0oSRMCZdvZJcdTAwMGJcbov0xZhcdTAwMWPLdCBcdTAwMDfKfF3va7OHqidcdTAwMWF11TGFXHUwMDE2apDP9Lxi0/nWXHUwMDE5Mlx1MDAxM1dcblRzsbcrd9djlaN6jlx1MDAxNfFkr5msLG84STJcImZcbj/Ro4Xi0eh5yOhyuaXqOFx1MDAxOCauUFx1MDAxMWWvT5JI6C2s6WqpS85RjrfLsnHgXHUwMDFjXHUwMDE2UYlcYr1cdTAwMTA1XHUwMDFkcZ0o00pcdTAwMDFcdTAwMWW1uHxqszOUK/lw2Wz703ytXHUwMDE0cT2VSmTea3tcdTAwMTS/2SHLOtnJwzxcdTAwMWMnx6Otjz3hvK9cdTAwMDbJ2rBn6uQwXy2oZqaYm8GaVvu3OciEQ1x1MDAwNFx1MDAwN1x1MDAxOXNTgWNb/HCcb+StjbX2jl6d7YlFKFxc1lx1MDAwYmKtoGaWsVx1MDAxNFx1MDAwMEyuXHUwMDA27F6enOMsNtD1dI02w2VcdTAwMWY/nbKtlCn143JcdTAwMTTjUtqWwD7M09rBxYjFxGhcdTAwMTfnwWgvXHUwMDAy0znkd9ZimZ3pVGqHuZ/hWW8x2bQ7gt4t+lx1MDAxOCaHJXzePVx1MDAxZC44vNY5X1RGLqnd5IxcdTAwMDNzZNuuoDFcdTAwMDQ+V+x0R1x1MDAxMqe0UKxK9Fx1MDAwYpXYXHUwMDFl9pJHxbmAYlx1MDAxYpzIRHrvXHKbXHUwMDEzXHUwMDEy6lx1MDAxNVx1MDAxZY/Udlx1MDAxN+5G2/k+b1x1MDAxMMCfsWpza9dCu1x1MDAxOCmCJ2JSIFx1MDAwNnSZT6OWXHUwMDE4aDRpzqZnf8XJsSGE9Hm57MdbYCNcdTAwMTKSwotme0ybTWZcZnRWlZGgYVFcdTAwMWHHkT2B1mu/0W6wyFx1MDAwM0rP+ICFLkva3Z4mXHUwMDFl71LE5mwmlsbZxkFBJr6w5zfLeb5cdTAwMTTVs7VHXHUwMDE3PVSm9jRcdTAwMGVsw/G84SZcdTAwMDfsNFx1MDAxYa5nhrKfqMBub5v5Kcy9W590VYHNXHUwMDFkNiOBnppcdTAwMWJnc1arXHUwMDEwmWvceGGvtvk6XHUwMDFj74E7aNPYfkaSXHUwMDE0iba4qUXW0Cw9NT7pM5FRzGlPYFx1MDAwN7TjMLphXHUwMDFioVx1MDAxY85Sxpa4nTNeVfKcXWyZgztLTGI8N5pcdTAwMDOxw9RcdTAwMDW9wHBEmEdVvFx0tszOmUSrKmHIW1s1qldmMmgk9zSd8Vxu3U5zKeRcdTAwMDfi0K7E2FTOZbKUI2GPXHUwMDE47nI73M7nuT+SMVx1MDAxYkVklK6iekBGQ91amsxwoaNHtlft6Fx1MDAxOTA7KECH46w+XHUwMDEyhL2aU1witVx1MDAwMIy9OFxyXHUwMDBmuzGenMZcdTAwMDBrsKXHXGK39uDMXHUwMDFiXHRolaxifTnNbTwkeJXTi4rzliNb9jjSsTboaVx1MDAxOSw2VLvxjlx1MDAwMcbOznVWXHUwMDE1XHQ2LEm8J1x1MDAxM1x1MDAxMyul2b5cdTAwMWKcXHUwMDFhWTgvsclS5YCBpMpjWFZDjGZm+3pBz4tFVVx1MDAwMXrLXHUwMDAwqFdOi1x1MDAxYlx1MDAxZiFJwPKV5mhbTpkhWm40fHM4Slxy4mms15eV4Yrv4cN0OJdqXHUwMDAyR1x1MDAxNzxQ84UxV8yK8lx1MDAwN6h5PPFFXHUwMDE52SqeXHUwMDE0yFwiXHUwMDEwXSzsTdvxJl3Qfu5cdJu8P/ZhXHUwMDEx0uas8e5NXFwhUjSOd1x1MDAxMlx1MDAxYlx1MDAxNXJuUIZo0PeZIFx1MDAxY/eQucN5mX1EXHUwMDAzL7fCieP6/qZaOVxy5mhJnFx1MDAxNZxHz6Iw1vh+7mp9XHUwMDE58XUqzG/sVmjZXHUwMDFjN1MkXHUwMDFjW3GDNZBcdTAwMTY624BcdTAwMWRVizYsMVxcxdjA8etlUOx8Z0NcdTAwMWX6pyxDXHUwMDA3taj5YFx1MDAwMVfJpFQrJ+nJJ5HMzPWNLk5cdTAwMTOr5Phtma5cdTAwMWRFwcXxPovpWqwwejWckz5epn22KNfRPirHqHJu1W1cdTAwMWPkwMjo7MGXKdVUyVggtGnh78zDs/Hq3XjP3Xg1NCFbsjhHXHUwMDE2tTzxjVx1MDAxZFx1MDAxNdJyP0tUXHUwMDAy20Y9XHUwMDBi8N/lWETHY5S+JFxu9oREiD10pyHUbiOeLcHFqFx1MDAwNKWf7W/W7e++XHUwMDE0kpni0mKzOYWYs2hwLT5iez2YXHUwMDBmXHUwMDE3+Wg7XHUwMDFikztcbilcdTAwMDN7v9HYXHUwMDAyT4+rPHC9baNcIkU8ok+9foh5Up09y9WvYK5+tN1cblxcpLj7XHUwMDEx4Fx1MDAxN8dcdTAwMTlX5pM8m1ErYjfJd5tejFimzqc9XHUwMDAyXzP8UPeTODxcdTAwMTTAoG9nkzmAX4UzbmLOPJfXuZmINlx1MDAwMI+deS642cJge5xeod5cdTAwMDFr0HiUXHUwMDEyKmOaKp5cdTAwMGI8ikQyivdaWlx1MDAwMS5cdTAwMWZGXHJE1yNMi1x1MDAxYc5EcyEozbTRbPMmXHUwMDBlWFx1MDAwMFx1MDAwNszp0mDBXHUwMDE102auXHUwMDE2PD5cdTAwMTZsYVx1MDAxYlx1MDAxOcGhiFfmNp71VdZndyqSb04n49AzU25JY63jIVP6wGdEW/vJXG7mXHUwMDA2buNaruJwPJJM58JWXHUwMDFjubPcXHUwMDE3cXmiLXk801x1MDAwZmIs+Ha8dJG1VVx1MDAwMjVBjd1mrmrGnCCB3cc2pVx1MDAxND+bP1x1MDAwYrFJtPlNMlqH+Yps28NEXHUwMDFlR1x1MDAxYVx1MDAxOCM19c5cdTAwMTN+2tfiUbwj9Gw+bWNyiyhcdTAwMTOVW/Csp1x1MDAwN0h5XHUwMDFinyCAWeF21miTXHUwMDBinM1cdTAwMTFcdTAwMDC8N4v0OEbX6Fx1MDAxMVx1MDAwYuThXCJcdTAwMWFssd3MpmymmopiOZ9cZtjleKy0jnKOhKzIZdk8aiOfS5ynOcaMgyUqayFInJLXxOJksjE5cyf0Ot+hnjCxJiYyqGfYKSb3yFxczVuX7aXi+MxIlVpsXHUwMDAzXZqfXHUwMDExfdZvVzYzLVx1MDAxNtecpe5Ogi5cdTAwMWRMXHUwMDA15vBMroNdQWRUUedZQeiu4u/aUlV0YSmxOs+fKF2xaFx1MDAxY+vvXHUwMDE2Yt2PwGzoYlx1MDAwNGy+r9RcdTAwMDBXVtlG81x1MDAwZmOJK1borD5ZIdeO9mGVOepq0VCybFx1MDAxYr6GXHUwMDA3wFlPqD5cdTAwMTkqZlx1MDAxOLRDj9WW3Fx1MDAwNFxi6rLs5ppxcik7+vZcdTAwMTCNxzt6K41cdTAwMTlLmsWckTBAXHUwMDE2MVx1MDAwN+HdqOfPVsxBbJeZmSfAT1x1MDAxY3Y1RL4rMXxV5C7wdo5HdJ1pmDfgKjtcdTAwMWPZaUVNTotifTKXR4spWnRRap60TrPjYLynjvRs6Vx1MDAwN0o2VU69XHUwMDFlIYTpbKBYclx1MDAwMv1cci/VMHckijMhbJZcdTAwMDZcdTAwMWVhdjRcdTAwMWXuKONcdTAwMTTxNlx1MDAxZFx1MDAxOWM19CphOlx1MDAxOXutQFx1MDAxNb3tODZcdTAwMTaT7TqdqcMsnG1weaQo625sXHUwMDE0X8rN2Fu1i2VcdTAwMTTwqFx1MDAxNSSjLUO5Pp2n1VxmQDWNZVx1MDAxM6VcdTAwMTdT07YwXHUwMDFiXHUwMDA2zdGBclx1MDAwNlxmRz877ICULlxcb9+OXHUwMDFj2knOjIKyja07XHUwMDFhY1jmoFx1MDAxZclcdTAwMWPwSWe7/Wm2ds61mJXpZFx1MDAwNpQskCzOdrBoaKCbyVx1MDAxYTPkwZFcXO5zr+82ZY8gR4CsXvRdXHUwMDA3WGKHYFx1MDAxMnvtZJVcdTAwMGKKbXxTL1x1MDAxMCrw7f7crZbzQYuNkZM9s/GZXHUwMDAy7CNcdTAwMWSzSixcdTAwMWKBa1x1MDAwN3l/w51cdTAwMTk1bFx1MDAwNlwiMy2tnJNcdTAwMGVSIWdcdTAwMWJZcKbL87bnTk6T/lCXJkBcdTAwMTBcdTAwMTIhXHTlVCiaTKpcdTAwMDQvuehabo7WXGLNjff7SlWUI7jwrtpNXVx1MDAxMcc28ybw2KCgj2eXsPFiXdO9bUpMwiBcdTAwMWL1XHUwMDE0hDeTdJ7YKdlcbvxkXHUwMDFjR5RZqoldL3TNXHUwMDFkS7wmYVx1MDAxZSNcdTAwMWSTqsPJzcpKXHUwMDA2tZ+XzpBm5ZSQ2FNZzIBiLzjFLvVleDyKXHUwMDAyObDA+N2DqVx1MDAwMW4t2M3YbHvLjbFfUCNz62JNI3KlhSvA50trTrb4XHRbJuL2mIhTNVxivPi0S6fuaVBcdTAwMTRpXHUwMDEwRToz2lx1MDAxYsN0olx1MDAwZkNig9bAbOvqTMzU3D+uYo/bTWl6VHi86FxyXFzgXHUwMDE4RflE1m2/XHUwMDE3Z1xyySeliW+19VqoXHUwMDA1WeB1Vlx1MDAwMWvFK/y6Oulhb79ap3BvUF/CWmBcdTAwMWJo1rZcdTAwMGZ+pKUkfayiRndcdTAwMDZOQ5z4XHUwMDEzXHUwMDExJn3JlrxcdTAwMTL4afLB3cp2qolSPj6dpkWEYjyB8e7qQFTnIXdEptC+Jiumk88uhjhcdTAwMWKvXHUwMDA2K3d43FRnYUDuy1x1MDAwMp/b5jGOWsVZtIJ7lE2tr6h8T1krtjmwUtE/N0IulCOB66fDJcdxXHQn5ZI5s0fDRJ1ucI+KqMOAmVxygFxy2I2j1DTFWnFcdTAwMDBZQJLL/jMteZxcdTAwMDIud+SKjb3d7Zt9PkaZXG4rhlx1MDAxNkKJXHUwMDAzn7FcdTAwMDCe7MeFo+xXeTNZ4vrK6Y9cdTAwMTfS1lx1MDAxY6nWOFxuPKq2XHUwMDFhLD6rzm7YXHUwMDEz1+JCr+KEMzbokWgzqnW6tYxUO4nTipuMw1FOYJ6aXHUwMDEyg35JRClv0Fx1MDAxMo+uXHUwMDBm2uAsLMStY1xi/cnCXHUwMDE1l+iI56MlLVx1MDAxM5y8LUqnMYB9i2el01x1MDAxZtjSNlx1MDAwNL5kXHUwMDExuVuMtcdcXL1tgSlcdTAwMTZwf7nB90FJ2Vx1MDAwMPtcdTAwMDN2VFx1MDAwNPyo3JhcdTAwMWMgvPOAXFxOXGJSW1x1MDAwNcftatybylPg4lxmjsLGbmhl0Vx1MDAxN1x1MDAwMMk+XHUwMDFly0jZ7DfYZs+2MFlRMyjOjIh4OlxyVbKM2dlYnEXoQpw0JKdPk2zriVx1MDAxZa17+nm2413AQtHjisig7WepXHUwMDA2WWCpoMmWwiDrSld0ZSBQyMLeJ/SeTbnSVPdcdTAwMTFcdTAwMTe7myR2lcHwXHUwMDAwUJ7S5vJKrVx1MDAxNzNcXMxcdTAwMWTDztbEnHdULkpcdTAwMDCrVY6IftqNXHUwMDBm8Wi7IafzPKC8pil1eSOVxiHaV/zUXHUwMDBlStSf0svI4si2f+TK/ipd1/quyWrnNF5WPTJEyMhcdTAwMTLPQO2BY+CIaT7luZ1H81VcdTAwMTJcdTAwMTdOmO5cXC51tMWc00a6RCZNcjRcdTAwMDGv/f+IOo/tSJkoWz9cdTAwMTBcdTAwMDO8XHUwMDFi4r1N/FxmT5J4XHUwMDBmT39R/d2316qBXHUwMDA2KimJiLP3/oJcdTAwMTMhXHUwMDEyhUV6v9uSeSfJOrdAsVx1MDAxYoDPWp9+LYhKXHUwMDEyXHUwMDA0JvW6TFx1MDAwYpZcbnsv+LRQSPh1qVWqrKGSvjSlyt6mN9NcdTAwMWVf5WuQbmC6RFJ0SC1j9YE3KPnn4/w7dZsj8Vx1MDAxY1x1MDAwNWpccjyt771+1tzEyTbv5Fx1MDAxOZwvcm+NU/hEVJ9MVlx1MDAwM5TRJ1x1MDAxOSO/RNz8NFxcLmAoXHUwMDA0bcJcdTAwMDLA8pC/V2pcdTAwMTZzqrPT//U6paZcdTAwMDRcdTAwMDaZ5u1cdTAwMWZccv/MvrvkvfrgnpaA7nVVPYIoXHUwMDFhYrZcbryt0YNTjfSUpVJccm9+XHUwMDAyW/jbZLCuWFx1MDAwNX49u7ZQQde8upeXP4G4X4apXHUwMDFiQ/t7OVx1MDAwYpJUgiFbdGylXHUwMDBi8iz/hfpcZrvuiTj9+3Lvs5hO8s3WJ2VKXHUwMDA1vs3vd1x1MDAxOephr2mprab+k5R53Fx1MDAxYfluZNFcdTAwMDFgaS7U49SWIV9qtUy+NvLrZerVXHUwMDE00mpcdTAwMDbjp7Sn+OH09OJU8oexRqZn16HXRnsqP32Ca/nzKoJcIkyKz957cYZe00jJY+WcxSdtKqlbXHUwMDExgM7qR2a3k8Cu/eM3MSu0zL94pmU0PsqnYD7ctjOL444tzJ7Aqd7c8zXe46B3XGLtP4JKcSrTXHUwMDE18YjQXHUwMDFmjotuXHUwMDE3XT92+1hcbmK+7GuhIbOpPIPXXHUwMDAxXHUwMDE2KVx1MDAwMlx1MDAwNvxQRP6qRHZzVPlcdTAwMDNcdTAwMTO7gez6zb9OxEpDlMr3Muysw2PUW7ybRF8lb580U3hcdTAwMTlPv2GaRfvH7IluJ/TGZJHFL6aHN3xZjFx1MDAxMDBtK1x1MDAxZiS+jDrc21x1MDAxYn/e4mX+6mHMubfIzbL52/n+1iWnXHSLXHUwMDFiupQ1j4+1w89cdTAwMDfPX7Lkgr6J98hsUUIxltaHXHUwMDBmvo3yXHUwMDAzvjdwTlx1MDAwM2RveGaBtVHKxTdNs1x1MDAxZjZP0EZBxKNcdTAwMTQ5XHUwMDBi9zHjjz+pssH0dVGC2IRVmSr6LqhcdTAwMDBIXHUwMDFmyUyKvFwivYJ7Vfz06mdcdTAwMGVcdTAwMDe/XHUwMDAwiH3FSFx1MDAxN23HXHUwMDExPsCVXqeJ/X7sXHUwMDA0XHUwMDFkXHUwMDE1XHKV4kF4iTQ3V1xyxlx1MDAxNaRcdTAwMTXJXHT2QUu6p/x5XHUwMDExbnav4GBaaHCkzFx1MDAxZTZcYpzfp8cvXHUwMDA3Q1x1MDAwZodo1C+8zVx1MDAwNPdAK1GF6Vx1MDAxNYpP9rw8Nlx1MDAxY8VH03RY4LNdP5HGxUtcdTAwMWVTqkKS7bLIqehcdTAwMTbKXHUwMDE1XHUwMDE3M2ruWpgnuY92iuqbXHUwMDFkP1x1MDAxMPdcdFx1MDAxMdlcdTAwMTCoaTDkr27JN2SSSnqS01x1MDAxNctvXHUwMDAy6PPXt0Lto/eWdyqxishccrNcdTAwMTkxXHUwMDAw7LPLXHUwMDFmXHUwMDAxya032rUu8K0wkeBlUbG/XHUwMDE5Wfw1M6VIP+HWcIeacHI/3UpcdTAwMGZcdTAwMDdcYsd4XHS+hVx1MDAwN1x1MDAxMn+9UF+Bt7cnsIZcdTAwMDO8XHUwMDAy8+9cdTAwMWNAtttW3NRcdTAwMTXl3vqReOfgXHUwMDAzgjSOb+3kW1x1MDAwNDZcZoqIXHUwMDFjg2i8Ib+hIfhv77aMKI/cvzJm/PhP1uohM3SYUe9ccmOz69DM+VtfO+XweENlNlx1MDAwNdErNY0vWKFcdTAwMGZIXFxcdTAwMTkxUDOOVEaR6p+Xl6GlXHUwMDFmiICKULDqVlx1MDAxNcNcdJn5ertcdTAwMWOq9OE3NWSgQDjLpORcIlx1MDAxOabfX1x1MDAxMlx1MDAwNf1UwVx1MDAwNjbNmdVcdTAwMGbT0m/r6nQ+OsRoTa73cYpcIlxmVFxc3FvQvFx1MDAxY+BXOl9QRT1lmFx0MZ+SJqTTa61cdTAwMWMtY4J+dNH4tlx1MDAwNPKjwVx1MDAxNlxcIz1ccu1iOXeMiLdFdmvyXHUwMDE1LtWUh1UwXHUwMDE2aW7/zV3q/lx1MDAwMv7NXXFcdTAwMWTrXHUwMDBi767AJlx1MDAxN+5cdTAwMWaPrWSPcy9vX1xiZrNfjW3q3y9cdTAwMWP5XHUwMDFmO2i8950p8ceu9Fc9ev2k36AnvYlcdTAwMGX+x2lr7zdeLzL+XHUwMDEw6Vx1MDAxZF9/hG2xk3GMsMNcdTAwMWSP6yOIT9WY5m/6Yc1cdTAwMGaFdNU+OcXcjGR7poEueCTb70VW9Vx0MHrLxcSPqpFcdTAwMTc9e1x1MDAxZo4lsLh8n8BRm0VcdTAwMWNcdTAwMWGEpJbZYD6lXtzq7HkrXHUwMDFm65fsxZqCktcym1x1MDAxZXwvYzFFNqU6QFVTi35cdTAwMGYl1GuNo0GPgNBfkVx1MDAxOduBWenZTOhcdTAwMTbcLi6PQI+OSJ9cdTAwMTBDuFJ4JL9dTOJyisPtXlwiaLguXHUwMDE5XHUwMDE5+OvNsVC//VN4f3yHztvXxX2RxTp3ICz5XHUwMDE4ODQnXX2Ficl7Y34rK3Bf16nZnFwiXHUwMDE5Za6YV5WTa+0ptcby9SXpSpObXHUwMDE2KZOuVVx1MDAxMlx1MDAwNkhcdTAwMDBGdVI+kFx1MDAwMvD0nXu6g7Ktw6X4XHUwMDAw5WE6XHUwMDEy8rE6XHUwMDFkf6ms4/a8dkFcdTAwMDZhdIv0j0LwXHUwMDFiP/9jclx1MDAxMk2fpm37qebUXHUwMDE4LmL/prxbXHUwMDFm9vB6XHUwMDE0XHUwMDFlelx1MDAxM6dcdTAwMWJcdTAwMGXdPFx1MDAwM1tcZtHwXGLwzOr67vWyJZ9Y/9tcdTAwMGLbYL+vNYiE1Vx1MDAxY5mpXGJv9LlK6oCy/pBccjzSXHUwMDFm/4jO7znmiHJVnlx1MDAwNEdOJiqsXHUwMDE2XHUwMDEy55vW2Gpnvlx1MDAxMlx1MDAxNspcdTAwMWZnzNmYkWZ4KIPEIFx1MDAwZTp611WVyFx1MDAwNlBcYo9kh79E5DhPmVx1MDAxNZaLPr5jiLB38j9sxKTKXHUwMDFm31jzj+fSL1x0Nvfrodv4e+TzXHUwMDE3XHUwMDBmRjExPVlSXHUwMDE4XHUwMDE2wCH9euaOXHUwMDEwXHUwMDFhId7dmiGZivzXp7pcdTAwMTdmpVxcmoBJhoZsi+zurc+MzZVGwd8m32BcdTAwMWUlLDG0nIBWtmBC3uDoLy+usDJcdTAwMDIthf/4YFx1MDAxYUB3/Fx1MDAwNW2yv87LjeJXQr+PkHOcq9RNNiQwpbupOVx1MDAwN09ldOXhl1+fXGLtTMlZsTgyhV+mbptoLV4gYnWwXHUwMDE22+tcbr80pkW+w16g6Wy/TJHhaofOja7sdPew0Sz9KmFpximocMJFVONccsv8xFx1MDAwZVE/WKMgtIKoPSu6w5VcdTAwMDaFb/qP71x0XVx1MDAxOKtcdTAwMWRcdTAwMDDTknVcdTAwMDaiS4GXl9Lb2DGE0WTFLFxc0qaJ6ca3Qr19KGpstFx1MDAwNp+LpL+sr4xw0z9cdTAwMTevlDQhjm2rXlxuK+TG7pBcdTAwMDC9KUfyM162Ur+2MOAmg5+DXHUwMDEwjYxvTD9RWbEt8p56OWw/vlS3Vqq5KMtcdTAwMGUv5dv/27+J0lxuw5+iXHRsI4aUNupD4btcdTAwMDL+TJJcdTAwMTeEZa1ZLv08v8JcdTAwMTNj0eL3deQouFx0rlx1MDAxYlx1MDAwYs5WsZvrZVx1MDAwM1K885lcdTAwMWTQ09gwmiBcdTAwMThFXHUwMDEy1Fx1MDAxZoT5sCGzOjBcdTAwMWGiJGzjxuk+iO8/LOPGfldQ+sfHfrdu85ZcdTAwMTGOX1xcitA5ilx1MDAxN1x1MDAwMTt+XFxcdGOx6iv8+XxcdTAwMTl2P1x1MDAxZMmgiU5r29BcdTAwMTVjtmpHXHUwMDFm0ChUiPa7f9fZ75K/XHUwMDBm1NfU6X11gcvr/ShYi1x0XHUwMDA2l0KUl8EjpjuJLmyH9H2GxHn5/ltcdTAwMWKnZ3BccoeX3+8om1LymXbdeZOVzNHpXHUwMDBmYlx1MDAwNs5ww9ryXG7SyFx1MDAwNWDtLF5Vrlx1MDAwZsdMrKCLLDVcdTAwMDUgof1g8zCtb8fsv1x1MDAxZlx1MDAxOCx98ZelRTQyPtBcdTAwMGabZVx1MDAwZVx1MDAxMTcxXHUwMDExel33dadSdnNh70CYXHUwMDE5rFxmcv+lU2ZlLdxmwmBcdTAwMDBcdTAwMGVP/ODxWnpXqGDTZLzas3h+XHUwMDBmyzyYv2zc0ylFhKF3Mv9//3SY84ZiXHUwMDEzcmHEfSa+p1xmNaBcdTAwMDaS2Vx1MDAxMOCRzFrizNhcdTAwMDWfiFxyj5NcdTAwMDRcdTAwMDHbVMBcdTAwMWFcdTAwMTKYXHUwMDE1aYaL9/XW8N9cdTAwMTZrpvVcdTAwMThcdTAwMGKpxW/X7uJlqEZRXHUwMDE2vXl15lf+zKf4uKK4aj/NhebFhPG6ulm/XHUwMDE3XHUwMDAxLFZoVFx1MDAxNKLaXHUwMDEzY3XNOq5mojNcdTAwMDCFXCKqXHUwMDFjMOrj9/MuXHUwMDE0XHUwMDFlou7halx1MDAwMptcdTAwMTL3y0fSkXvy31x1MDAxZs27VvNjXHUwMDE16G9nO2z7mqfcXHUwMDE3IfP+wplcdTAwMDV1ZC/Ho8Wkd/jJ4rGOULKuXHUwMDFmybjK1kxY/2xcdTAwMTSza8mbqF+ecmt3Z1x1MDAwM5pcYqpThKNW/jevV/D7Qvrrv1AuPetf67FcdTAwMDDwXc3csTxSTNWgt1x1MDAwMFXQPOtcdTAwMDeKYERcdTAwMDTrX1x1MDAxZuMg+PvTfmaK9Vx1MDAxNa89ObppI1ZqXHUwMDA1TzPCR+bbV/Pbc8J7g1x1MDAwMzXFOoplXCLI3apcdTAwMDBcdTAwMWJ071x1MDAwNHkzwrBvNKpcYnl2fIX4WFbBbbw79CsoIGZMXrlnhzerIE1ZOiWBKLxyXG70yaaRTVx1MDAxNYdkwpS/XHUwMDFl5l2K25Lqdmz8dlp98NBcdTAwMTjOcMbJRcL9flx1MDAwMzWs5Mrgblx1MDAxZLx0sFx1MDAxY5whXHUwMDE3vo1cdTAwMTLvXHUwMDBmSLpcdTAwMWJcdTAwMDZiW/B+V1xijFx0XHUwMDE1RXJcdTAwMWWJVTdqJGFcdTAwMDKqS4FQzUBJmU8zTl3tKvJcdTAwMWSZz6rVXCKizy6wTOL7XHUwMDA1hUKwp1x1MDAxNDlUdFxmw4mZXHUwMDBlXHUwMDE1dotFyoj8czBMYJAhj7R6ompiXHUwMDFlzrhfbfRie8fUrfBcdTAwMTBxudWOSKGzUTYm1tnHXHUwMDBmUkNcdTAwMTbQ1ym1cbGq/UhcdTAwMTI0XVx1MDAxYTo+XHUwMDFiZ0RGP2xpQVHHa+r0tGVJXHUwMDBmSkrnyFqCqq9tyYAy7StinG2qjiXzZrxMQHuQXHUwMDA0NyCQI7aIclx013Nm+z2Wxk8pUah+KIP4r38jy5BDROMo8L5yqlpd3uBcdTAwMGJcdTAwMDNcdTAwMTlcdTAwMDV3x575NqA6+Vx0MsjExe9cdTAwMTVcdTAwMWJcdTAwMTJcZsHp1DL8T3TE3JqKXHUwMDAzXHUwMDAz7IBlP4R/LNghvv8ufGk62S7q13+LXHUwMDFjxUzJzHj7XHUwMDE5a5M4pVx1MDAwNLzQXHUwMDE3XHUwMDA1yWtU+Fx1MDAxZVxydYxE4lx1MDAwMklEXHUwMDA0mlBo2o5cdTAwMGbO/GVqp5FwKeHNcJe9RaGUbF9cdTAwMTbyoTGq1MWRQoliU1x1MDAwMay+cejkKKsj7S5cdTAwMTi9Lj+WtKw8PFLxNDPbv14+ieOn5IDStcnz4PDo9NrvrDBGs1x1MDAwNlx04NSnOFx1MDAwN0ntco5UNlxyc3szu3k2J480d1x1MDAwYs3x3yFcdTAwMTdQ8lx1MDAwNVx1MDAwMucknpiVbtcw5Fxmm5V4XFxreZj8jCxmZVA3Ykx2XHUwMDE1ry8hY1x1MDAxMlx1MDAxZdjpz2ffWFL2kHdcdTAwMWX24EOIwMn8odlOsGRcdTAwMDT8hVx1MDAxMVt3K/9+eZREu0NYo06cY7mVXHUwMDBiU3Ffjk2CR8+q81x1MDAwMPpvXHUwMDFhxEQ47Fx1MDAxOcPS+qlni1x1MDAwNtmiSm1cdTAwMDGIKFxm7aexXHUwMDFmM5Az/2jpnFx1MDAxZL4yskdyb20lNkZPllx1MDAxNuV5dKngXHUwMDA1XHUwMDFl6HvZwkVsg1UoZT41h+/k+Vx1MDAxZVx1MDAxYymnXHUwMDBiWWgpnmFnuSRUXHUwMDEzYCZ+16phRuq1Ynbs4JQtnsNcdTAwMDAw7lx1MDAwYiBcdTAwMWGLm9TJNcG5j23eXGZcdTAwMTmxdVFH/d9edrVLn9HKXHUwMDE1XHUwMDA2ZdBmN8/ka5VcdTAwMTU/XHUwMDBmeohKS5c+Ob/FaPf06aNDt1xcjlx1MDAwNofA+77cx8TqzeLJXHUwMDFjQ4JcdTAwMDdaXHUwMDEwISP/2nQ+tVx1MDAxZiZcdTAwMGakM1xifG39kJfOuKNTLG1cdTAwMDeeX7jy1sdcdTAwMWLKPCesg+jwpyvmWeo2TcOcSyhcdTAwMDPiRTyIXG7/js5cdTAwMTk/fVx1MDAwM/GTw98vcVxuKTdcZkXa6pWEslx1MDAxMWe703O7XHUwMDE4JVx1MDAwYveWIK7MXHRcXHt3XGKrsruOWq03hPxltz0wMItHpJjumeZKr2e2XHUwMDAxO0NSRp2CrFx1MDAxY1x1MDAwZYNkNC92XT/WXHItUyitv+D+aDiAmXAy0kY49GtPW9+AOFx1MDAwNMVuzWo4Y7Lm3YjIymGxXGLTTUpcdTAwMWFcdTAwMWamXCJcdTAwMDRZnaGe6eP4N89Z3nxMUnKRMTE8d3+Salx1MDAxOXwp7Wc/OWjb4uznJCPOya9puFxuZqx6KWBqKLLxKbjsy6N195nBLlx1MDAxNEmzXHUwMDFmvfPZ4PHDQdRcdTAwMDJcdTAwMDBmlkgwwjuO+D1cdTAwMDbDV1x1MDAwNLqz/251e41cXDvghdH3bHqAclxmXHUwMDFj7/2/ZofM/3pu56KyxbwhXHUwMDE53lxcXHUwMDE05DxcdTAwMDNDXG6Itj20qdJb5LXsM1BYcneLV7I4ws0ygEFMVSU4XHUwMDFk+op275Pg7lx1MDAxYbxKuM7qM9VcdTAwMGYzeCwyn8zDtjGmNWTG4r5Lh8BdXHUwMDFmuX9wXHUwMDEwXFx0XHUwMDAxTkmydfTpVsTwob1kWlxi+UvKetBSXHUwMDA0mkZcdTAwMGKbqlx1MDAxNl5uXHUwMDA0XHUwMDA1n65cdTAwMTL7+JuehnTJ0l5RQm5AXG5cblx1MDAwNMNcZmjVXHT7ppo83v1cdTAwMDSOgOY0ttGmNuJ7TY/VyVx1MDAxMbhn8jvJrLeHb8AxvUQpbN54kvYycJNvXGZcdTAwMGZcdTAwMWG2PVxcvLF5XHUwMDEwj2Zh0Fx1MDAxNulcdTAwMDT/vXv7iKacblx1MDAwNVx1MDAxMb9AXHUwMDFicz97oGz1XHUwMDA0SsI0/jy1XG72Mpkqe6LBdvNmKNZ/vVx1MDAwYmlISMRcdTAwMDdcdTAwMTY2XHUwMDE0QN7roVx1MDAxNaSTzHBcdTAwMGJcdTAwMWX79/VCXHUwMDExeOilh1x1MDAxMEdcdTAwMTlWt6r/OifSRUxcdTAwMDFfynj6+3nH1uZ2z7Mzt0/qwEe7flxyZlxy1peTcDQuYoVcdTAwMTZiV0o94XVdRoksQnel1Vfjb8CGXHUwMDE3M9lRhd9feVx1MDAxN/3M4+X07ja3XHUwMDFjf5GF6G6kw1xiQFx1MDAxYtIwXHUwMDExXHUwMDBlY1x1MDAxNJTATe+D51x1MDAwNI7Ea0EwQz/H9FBq3n7rRPDZ/ao7tLdcXFx1MDAwNCqDYs1cdTAwMTIoX6VcdTAwMTcjvYdoJFx1MDAwNILFy1x1MDAwNffoXWMp8aOUxM/YsFx1MDAwMY1cdTAwMDXog4loRkqirEuoxt9usVx1MDAxZKxKUZQti71kw8bpp1nRjeVcdTAwMDDOXitUwVujhPt77G1QXHUwMDA1LGyLjzT5OqXHVmGJxWxajE75RtpcdTAwMGbZp3nVaYdNY7GiTaxcdTAwMDVcdTAwMTf82DuTXG7HfIRcdTAwMGaU9DpccnlcdTAwMDTweshXoUFCllx1MDAwN9uCTr+j5zTqkydcdTAwMTNArXDomVxi8uCdXHUwMDE1y35+IFx1MDAxYrf4XHUwMDFi0JhFsvJcdTAwMWJtXiRRn4c1qufhvtJCzIGGXHUwMDAyd6BcdTAwMDFFaOQ3g/T+Llx1MDAwNlxc1ybj9vSISvgp5Ihccl5QNjzagPrRmVeiZbdcdTAwMDNcdDi3mZPNXG6OzaVbhEJFaD+Q4JCu437vI12vfbZP9tfDtb/ZwjerXHUwMDFi7/n1W8ZF0a1/v6QrVGXFNf6dXHUwMDBiSHpJlaT+1uucL9BaXHUwMDFhvLdopWby6FXJ2yT9k4BDucztz1x1MDAxZdz1+ERFV8OiV1JcdTAwMGZ2fCdjfTNMP1x1MDAwZqq5miCx5Jks41+MT8Grep+7NekhQ4VcdTAwMWElc6iLNp+Ni51g5CTRjZfQ3FxcXFxccvi8U8l2J669R/ksXHUwMDAy+6VZXHUwMDE2qmX/j/35eFx1MDAxYftcdTAwMWZcdTAwMTTpIKJPmyFfleDs4rl30Fx1MDAxMJzXTlYyb13D5NXrom5ccrGP4HDF0bJcdTAwMWEn+dOTXHUwMDA02LPk8jD8WKo8KJL7UbvNgH/pRyvBlPvnnb8oXHUwMDFjzvNA6O+vfKOvd1wiy97kLem3XG5NRbJHXHUwMDFiuTHl0CtFdOI90Fx1MDAxMYHgy1x1MDAxYo9eXHUwMDAwc707h7VcdTAwMDPuyFVhMEWv9Gt+jO7I9pnIJr+R0KixKF/bTPSSLM9cdTAwMTLYycsycCZXK35eXHUwMDAx+DFcdTAwMDd9r49cIv66gMmv3YY9XYiI6K//XHUwMDBmXHUwMDEycEt6NfM3QljbXHUwMDAzrYmgUPfGh6fh1JP0NUhcdTAwMDDaXHUwMDA1XHUwMDAwnyW8RNTCXHUwMDE4toWPiVxcZskhf7Qn5eNcdTAwMTJLJ1x1MDAwM8Mu9a4xbkI3b1x1MDAwYoFcdTAwMWVIXHUwMDFkU1x1MDAxMT+yo21Oa620OVQuN1x1MDAwM8/nTsJ7IKZcdTAwMWZdolx0WNFcdTAwMDBEXHUwMDE4cFEwbVxm66tvXulcdTAwMDL+ZDf8XGK+YmWZjfvi11xuebZcdTAwMGJcdTAwMDL0XHUwMDE19mDBp7dCwFx1MDAxYmfRXHUwMDE1oLxU97JI1PppyD/POZlcdTAwMTNcdTAwMWFvnb/omsBcdTAwMTA1XHUwMDFmZneG3Wo1L/zozmbumWYuLpVcdNhyM7WV75NcdTAwMGVcdTAwMWRFi/3bXHUwMDE0XHUwMDBl3ONZmE9cdTAwMDWAuoNUICB/fd3oXHUwMDFm0EQ+jDB8MaKaQG3NNu9E8VtLXCL+NFPPQ5FcdLpcdTAwMDHpjf1reyfG6nBnZfLfLyRW6SBpRDbMXHUwMDFiWOuOXHUwMDFkLb+i36a/Q0VcdTAwMDfgkVx1MDAxM6wxm/I5tLSctFx1MDAxZt/vXGKB8GPfv0ObsP5cdTAwMThMeDqDR2eaaWFi5LNUPz18643oUlx1MDAwMGzjt1CabpNccuVQJLRkh8HeX23IXHUwMDEw6PGEY4c+ulGuS2JBg1x1MDAxN5N6Qsrp5GuWXHUwMDE4XHUwMDFkfchuSP87XHUwMDE5UHJcdTAwMTbqpFdcdTAwMDNCZZQt1lx1MDAxZJFuqKJDt2ZPs+XAr1x1MDAxN/nUXHUwMDFkx7z9JVx1MDAxOVx1MDAxZNLHLrJ4zKpcblRvXHUwMDE5aGja7k4nZvVuJ7ZaQb9cdTAwMTHCXlGkn2rTgufMjOboniBcdTAwMWJe8Vx1MDAxOL9kXHUwMDA3jZBm+6A5x0d9Oj+S3bokiZxI9Vx1MDAxNVs5N1x1MDAxM/khaepccpiwxJA8OzxbXHUwMDA2XHUwMDE3JlBlXHUwMDE2ks+xcnTRU1x1MDAxMd28XHUwMDBmVkHDokiph4CmTC6tNiGydaBIXHUwMDBmL3vnpzJKXHUwMDEzcPhkUaB7Wb57XvZoXHUwMDAz/bVHw6NcdHFcYvj9QCtIa91cdTAwMTXkdkbK5jtn/849LeLRXHUwMDBl93WYXCKy2T1cbsXMIE/o30aO/IiaXHUwMDAykkc+0mJcdTAwMTbAXHUwMDA2zangXHUwMDA1XHUwMDBiXHUwMDBiUXp5vN5cdTAwMWVtjzV3VSZbm1x1MDAwMkg+eTDjn1mvkjQnUNJcdTAwMGWrgqvNkmDDTSc23pNfj1x1MDAxNidcdTAwMTVcdTAwMTFqTOR4PmCVdqvPJKB05ENeYIY3XHUwMDE56Vx1MDAxNShcIvzlXHUwMDAwmdO85UhcdTAwMTlu35joXHJ2/G4sseHKYlx1MDAwNoHhnqXdR786XGKnJfw7Ydm4MG1cdTAwMTacLVt7WcVcdTAwMGVcdFGzpmdcdTAwMTLkWJi3hL2z5ejihyhTaI8zLZIoqFx1MDAwMshcdTAwMWNcdC2LglVcdTAwMTlcdTAwMTfCJl1fXHUwMDBi1Fx1MDAxNDP9ZHjAwlxc7lJC8sKakjnCz1x1MDAwZmBMzjJcdTAwMDSPXHUwMDExs6inVD0hxlOPWGItQnNcdTAwMGaCZE60a1x1MDAwNzFhUTG2tVxyeUppXHUwMDE4XCI7oGqZlFx1MDAxMuOW8PH7u69cdTAwMWbxm2ouyWvlZ5Zcclx1MDAwMXkptJDmXHLe+y6nLeHSLVx1MDAwNfUg/iGFoGVhjepzXHUwMDA2ilxcyiBccrrsXHUwMDEw5u/+XGL9crBVsM2U/1x1MDAxYc6XXHUwMDFh2VxcmHjvXHUwMDEwYJ5cdTAwMWaSXHUwMDA17Fx1MDAxY5Nu9udyK1x1MDAxOVx1MDAxOYmGPixcdTAwMDJQK1PgkFx1MDAxY1x1MDAxNpMt8eZcdTAwMGaUXHUwMDBiXHUwMDAxslx1MDAwMb86bvpdarBcInqhX+5VaPhxXHUwMDBlK8yI+jH/Xlx1MDAwN7fnuVx1MDAxMl4pJUKTXFxcdTAwMWbuO0aI8YXtX1VSNLZ9f9uK95+9cP7uSkpDxuhJcspFqsV1XHUwMDFhpI9cdTAwMTTT+Ewmr1x1MDAwN0lcdTAwMWZcbrZcdTAwMWF0I9vkTJK0XHUwMDAzvDSaklrwXHUwMDA2q31cYsyYZaaoX1x1MDAxMVx1MDAxNFxio81cYttcXFx1MDAwN/DJXHUwMDEyYMxcZlx1MDAwZYs4vPkueibBhHWpblxujexB5KlYRk09d4Lzi1WV8ZlQJT3/M1x1MDAwMsKNXHUwMDEzXHUwMDEzvVx1MDAwYjb0OK8nvNmteSaISbbFuOHz1dPjqNPfzX6OI2mpXHUwMDFkXHUwMDEywHi3XHUwMDBiMdfyp6omwFx1MDAxY3KtTTBXRrdcdTAwMWF36eCa85TKVHNUc/HDXHUwMDEzXHUwMDFl4ttcdTAwMDJS8lx1MDAxN/WL8Vx1MDAxMHPngj29lyh3XHUwMDAwjWWqh7I9IXLlvF90f5l/XHUwMDEzXGJRxH6Q6HOcK9RBTaWiXHUwMDExdFx1MDAwZVx1MDAxY4GWejxcdTAwMWLzOuvwXHUwMDA2SVx1MDAxMMEviOrIfabtrrurWkqkjmZ0loJ20fPmXGZeXHUwMDA3XFxcbmnyeVxcVcb6z+yByW6SObXZ3y2LTusvYz6srO3JXHUwMDFiP//OtuFJ8vQ/cvhbL1x1MDAxMYKCkENcdTAwMDXy3URgWFx1MDAxZln332f6uExdX8PxvVx1MDAxN6zmXHUwMDAyXHUwMDA3vlx1MDAxY1x1MDAxZTzbLLrbZznWrs6eXG5qvklSXHUwMDFib3X4NVx1MDAxNPyg3MiG31NAVjxcdTAwMTVixaTvlKdcdTAwMWalXGJwPe3RT5yn8ziwvnyScEapSNK3evZFsMaeLVx1MDAxOcDDXHUwMDA1NjE0ztbzXSjzIVx1MDAxOC3MaCksXHUwMDEweVx1MDAxM1HhbVjoXHUwMDFhfohoJO03PiM8Ur41tE/H31x1MDAxNUQrn35YrppcdTAwMTPn76wkOsqAsCx6PMTxPkhI5LVONGnL98btTTa78S9OMKJcImFcdTAwMWPOUf1cdTAwMGLejoaub552UKSpiC+fNZhpXHJW7meVuIBhXHUwMDE0qnZcdTAwMTFcdTAwMTRcdTAwMTLuvnhLj8s7hnKnuCro+Crm1Ok0XHUwMDE3apt0r8osddt/JcU5XHUwMDE1PJR3zFx1MDAwMFx1MDAxNXNcZl6eXHUwMDBmqam+ljdvXHUwMDE1ovVhXHUwMDExkJV12Fx1MDAxNzmV1T1Ye0n8slW2PkGflVx1MDAwZvJcdTAwMTiA4/HTtYdHgP7SXGbbP/2b7KPPKJfCqaOM3lRBXHUwMDEwq5TOKXDnd6qD93M5hYLR/V1cdTAwMGV4XHUwMDFmW3LcZ9Je1L5cdTAwMDYvv5lsQVx1MDAxNGagbDbRoldyMVx1MDAxNXaJdk1cIvj9iaVthYKd+zufzT46cNF2uEXXV46/W2VcXDzTrD9Bytl4sMmPKOdQVlx1MDAxMlx1MDAxNVx0ivx9XHUwMDAx555uRotHXHUwMDAwJVx1MDAwNcWLsjWFUFx1MDAxMrVcdTAwMDZZlGdcXI87cFx1MDAwMJqSOsBccpLgrlxmVHB7XHUwMDAz+C9QmmrFv7WxXHUwMDBl9+GLP0X76dmp5P8zXHUwMDA2XHUwMDE4xVx1MDAwMof6XHUwMDE17Fx1MDAxYrZT3SypYmFcdTAwMWaYfitcdTAwMDTkalx1MDAxZp3CXHUwMDE5fsdcdTAwMDXfZuEsXHUwMDEwrGxcdTAwMTfjXGJETD3DnSjki6Mw9EVcXOnT40dcdTAwMDZHMmfh41x1MDAwMC2z/NfaXHUwMDEz/LX2gL5CVSlcdTAwMDQkXHRsxz2hwETn18PXi7OA9mZ2Z0bnpjdcdTAwMTn8boVEXHUwMDFmXHUwMDAzelx1MDAxY3uI9CRK9kaBK+1uslxiOlfdl8ZcdTAwMDWw/nLZ+eDV4tBJnu//9vRPu+SNhtxRn8k0i1x1MDAxZlx1MDAxZHbqzI9Elsr8L/foTfpyXG7sa9HdgMlo7kAhU3Wkilx1MDAxMahi/PREXHUwMDFi+lxihkh1W1BJdpq01lx1MDAxMWZcdTAwMTeWv06NK0iFlDokf87P8VtcdTAwMWJcdTAwMDAt17ix2LJcdTAwMGJcdTAwMTmR15PxlonKtVxys1FcdTAwMWbPR87qXHUwMDAzVCjMxf7VMHuTqnXYaHXiLy9UlfyoVaEwSCr3OVx1MDAwNUe9RI7xdkhcdTAwMTR75I5B8CmnaEh9b/+yhJnuPaWcukVcdTAwMTaKtVx1MDAwN3tcdTAwMTNcdTAwMDH9XGY/8OhEtCgxM/0opmw5506YJm5Os8+kKbXkrlN3r54tSuWYaLaQ6NhgMMSfqbxcdTAwMTWZXGJnmEyNe1bTwtzlXbX47vLI9odcdTAwMWFSXHUwMDA2g+gx0UfknVx1MDAwZmCJXl0pi4puXHUwMDA0XHUwMDA2QL+3XHUwMDFkvFx1MDAxZlx1MDAxMjA6XHUwMDA3Y8FyXHUwMDFl6Fx1MDAwZijdx1xmy+KchnOGvGxcdTAwMGWrxMkvm4B9M0ZcdTAwMTcpyGL4wq+QuXNmKMpyeFx1MDAwNvJ3NuM6wWs7XHUwMDEyoFx1MDAwZU7OKb47XHUwMDFi/lDL06xWRM1cdTAwMDMol0qsP29eMNQ6eb1HXHUwMDExXHUwMDE2XHUwMDA2ia+Xn1x1MDAxMP5cdTAwMWF9wWYtalx1MDAwNiqkI0XxeJ7ev4Fn+IL6XGKTZEqLW8FbXHUwMDE58e/9L4JLKc/yXHUwMDFiZ+1cblx1MDAwNVx1MDAwN1lcdTAwMDJcdTAwMTlwJJI21/A2gFx1MDAwYuNrI+dXj008QVx1MDAxMO9U91x1MDAxZHBCZvuWzVx1MDAxNujspSG1uu7G552hU/xcdTAwMDLvT1pW1Gu7XHUwMDEx/JdNXCJ/XGIyiY7FnWkgnS2hXHUwMDFkXHUwMDAwXHRzR0fdXHUwMDA1XHUwMDA0Y6BzeJe1lFxcI9GrdVx1MDAxN3Up16zNmk5FXHUwMDA2XGaYm9NJV17l6HDWjLRcdTAwMWSX3C6iUXPaUVx1MDAwMmD9oqSB15LuXHUwMDExNFx1MDAwNOp4tleKofFY2ONcYvi33v58XHUwMDAzJeBduo6Qo4LuhsZcck0wNV80evvFgvlcdTAwMTJcdTAwMDA4r59G+Xb03zk4pnbuMzeLXHUwMDFlKeljyjS1ut5ArniLiX+gMPvG3lx1MDAwNHNS5/d/4H5nN1x1MDAxN+KtXFy+ybLxZVx1MDAxNsv/3Y93XHUwMDFmX1Xg/644aZlcdTAwMDP+lbc5Q+J2epuMPlxi6ey72e9Zj4vPZkksXFynh0l4mnhodcBuWnDpXHUwMDFhoVx1MDAxNrFcdTAwMTlcdTAwMTWWeFx1MDAxMmFpXHUwMDFkUP53ZD/X6bm73sVcdTAwMWTyU84rXHUwMDFhvmZf8mFL96/n37lcdTAwMTI0/NRcdTAwMTHz0EfVtYbDKJl6MVx1MDAxZVPqP7t80bNUTHFcdTAwMThh8adWwUlwXHUwMDEx3CpbLvj/7Z/2S0Ldq7ZwwVx1MDAxYqGFskOrWztRk9yXLkZcdG6wnlx1MDAwNVx1MDAwYlsotvgpo1x1MDAxN+nCXHUwMDAy1m/e1Uno79rFIYlRgHDEZ9ntpD1cIrJcdTAwMWEh0JqGK82QUzh34Fx05u/V7nZcdTAwMDLuMp5zcbQrXHUwMDA3QCeWnZqRv/5NSXex0TDpWfGSNveZXHUwMDA3TIH+0lwi5u88T8TcwGlcdTAwMDT9ISpKg8xnu+GS8UpC3dderVxiyirz6aihXHUwMDFkeYMljVAwNu5/Z8DFa52xZJRcdTAwMGIgP3nwTma21/6M2JnL7aR88+RiKL2OXHQ4J8dcdTAwMWNbyXm947Bqx1x1MDAxMVx1MDAwMYv1sFx1MDAwYvWeXGat945aMTpcdTAwMWHVXHUwMDE3Y0k0POL9mvtBh1eZIONcXI5AhD5bZFxm11x1MDAxMt9cblpTmDv8LyOG7Vx1MDAxMbu1XHUwMDFm/fFcdTAwMGVcXFx1MDAwZsJTXFyt2z/PMJSJZuKzatdSPSe9Z9LUvzPS9KFdz/mjZIdD3bguvYqMY7GMNf+payqsKkBcdTAwMGZcdTAwMDZ1U35cdTAwMDNLp6pIgsb6+lx1MDAwNr+JXHUwMDAz3aDJbUGXV5T5XHUwMDFirVhcdTAwMTfUm1xmXCKF0TGXJdPftWMgPDtcdTAwMWJcdTAwMTMsozToXHUwMDE0KEDTwVlcdTAwMTlcdTAwMDBHhVx1MDAxM1x1MDAxOYW7XHUwMDExUizYIYdcdTAwMDXufkNcdTAwMWTuMyDXceg4KJ5vpqPUeidccsx4NeR0XHUwMDE4hmOYj++ygdWJTKCeaJKzwoJ0XHUwMDFiqky4jXSjpG9eglx1MDAwNE5cYn2/b5xcdTAwMWFPXlx1MDAxYXWLV+w3NlOVXHSKVuTw//OZfrZcdTAwMTiW4SwjXHUwMDEwi9CRTlxm13ZcdTAwMTYoPcMlSGrYa4NcdFxcXHUwMDE0rKlcdTAwMWH0sO6UXHUwMDBmpTSKwS7GTUwvLT5cdTAwMGIhmCZcdTAwMTjv/Fx1MDAxN2R5IFx1MDAxOVxmtjJWXFyBeVc5m7zPXHUwMDFlXHR2mcJcdTAwMWVv+0dAzJq0SGZcdTAwMWRcdTAwMTjNT1x1MDAxY2tso785cSxVXFyVP8bo+lxiXHUwMDBinJfYgvBcbqm52MmpqNNcdTAwMTR3XHUwMDA2XHUwMDEyXHUwMDFkXHUwMDBlcfW7bVBn21x1MDAwYmLpi1x1MDAwNVlcdTAwMTm0cqNi1ijuXFzCqZpXueSjt1xykolxQlwi5Y7jMFx0M1xuXHUwMDBiIDmXXHUwMDAz41x1MDAxMfnLb6DAUL0+XHUwMDFi7iE/hoU2vEA+0LvmwtrJ5WJEJMwjg7R6rSbcYVx1MDAxMkHPRnZe7ZqhrdnW5u/OSXrIf6BcdTAwMWHB4jXTmsDeffGw7eiA2Zs7n+orQYqtOdVrsMP9ydTtQVMjv61cdTAwMTC5vlx1MDAxYzfEL4dcdTAwMDJcdTAwMDBCtYL9XHUwMDAyIVtcdTAwMGKvyLHtJoUgxfBcdTAwMDRcdTAwMWLxmFx1MDAxZmjq1EVinF4hvcY3glx1MDAwZYGJYr+GVppbXHUwMDEwr81cdTAwMWFcdTAwMDFcdTAwMTVQyeHx62Vsyy3Yi/Pfe1hcbt45ltfZXHUwMDEzXHTTUaGrXHUwMDAyXHUwMDAwj1x1MDAwN/5cZpWEqIX7XHUwMDFmXHUwMDEzk8D2OkrW4iqKfihcdTAwMTW34dBcdTAwMDDfsZflXHUwMDAyflYnRWn/UkW6+c5Byst2p9daX56NYCPJkktcdTAwMTKxX8Eypa2A0/jPZyPObFx1MDAwMaZVgVd7ZtmHWtPDN8VcXPC0MrdtXHUwMDE46PFcdTAwMTfq1zJyNNKpL+1epFx1MDAxMvHxue/7Y9TVmTlcdLGhL7hvv5LgXHUwMDE45WdJy/Wpi1x1MDAxMlxy0I5H17+9diRiXHUwMDA1XHUwMDE5Yr6C1cHmeXxmxlxuU1x1MDAxZHLKv1x1MDAwM3x2SE7UnKNm+4zEpPxcImmg2FUyZVx1MDAwNqFmiVx0XHUwMDE0XHUwMDE2ZnT6i1x1MDAxMuBOkVx1MDAwMvdzlU+K1ORcdTAwMTNcdTAwMDaL4OX3XHUwMDAyJtxaUTjPQOdcdTAwMTCLXHUwMDFjJzq9+EjpJuaoWqWa4G1geIRcdTAwMTWqScbjgTvtUFx1MDAwNE5cdTAwMWU/XHUwMDA2iId2bYmIXHUwMDAzXHUwMDBlK9TFXHUwMDFkQWWmxFx1MDAwMHFcdTAwMWLwgGNcbrX8IJD+T1x1MDAxMz38UyBe9ZlfXG5cdTAwMDJjpchcdFx1MDAxMpN/R1NqyPOL8lxcc51cXPRcdTAwMTKaMN7VZdLup+y/T4tER4ZMzFx1MDAxYnHPaMEkcu9cdTAwMTCQbCcwtsFT3lx1MDAwZT2Ui9/kLaCfKUhWlip/qjGzRoMzMiy6XHUwMDE0wYk+rVx1MDAwMaH4PZ35g050QLGah8agXHUwMDFlXHUwMDFmm9XyUnQjiDuPRVx1MDAxN2Kbovl8SuCTySTvmvBcZiHvcVL0qp+dKukxT/6SZ7NcdTAwMWLKXHUwMDE29ZCzxpNcdTAwMWXENKlcdE8+b19cdTAwMDVcdTAwMTO2i1LqrVV+XHRcdTAwMWKulDOIZ+JdXHUwMDE4v1x1MDAxNf5F+O/TuplcdTAwMWbqnU9Z6YdcdTAwMDQpUKO674/7986O/M50oiGhNvDq0X5yz/RR5ldz7mBtwINcdDlcdTAwMWF9WM/bxvWT3lx1MDAwMfz0b048KvC/M0BVYX2b9PD6XHUwMDA2/2AntkBJZYnxIV7XhH6zsntcdTAwMTJI/Xuu/SrWP23YksX9Quq0XHUwMDAwqnr4RZBLrUpcdTAwMTP2k4YqjETfOFjFXHUwMDA1a1skaHZXor70KfRcIpRM2UT7MV9cdTAwMWTw355cdTAwMTRddJtcdTAwMWS6wSB+ZqCjZ0leOD4yXHUwMDEyXHUwMDEyuuRcXCG2uHBcdTAwMDSEqjYnXHUwMDFmQkT9XHJy7a6cyuVcdTAwMDSKsoxPIIalk+qbq91u8659nEuTXHUwMDAwfPuxXHUwMDEyUdCAqJ5ms8E05LolXHUwMDAxUO1cYlx1MDAwNECpXG5g4pxcdTAwMThSM4nU8Vx1MDAxNVx1MDAwYnK3r8i4giPmXHUwMDBi3CguwHKafOO9XHUwMDA2531AXHUwMDA2yoW5+JbYXGZbp7ftKog/7LKt0Fx1MDAxOFxmLF5cdTAwMTBcdTAwMDBE9uWX/zlfbFn4Xy9cdTAwMTjOJHdccmFzJI05+nO4JsBzrtbI/axe1Dslqr5cdMSlRppDkM9UI9BcdTAwMDGsl0Ot1aqG9lx1MDAxZTd/Z5Bcclx1MDAwZWZEee5cdTAwMWRcdTAwMWVcdTAwMWbq6tJSvUHXYCoyToyge3jzV9YybYDza1x1MDAxN2vzRVx1MDAxZVx1MDAxOY9gQHdmIVxceIz8oSWUXHUwMDE2maplfu65zlx1MDAwNiZRTEhcdTAwMDY+MWfljFx1MDAxZM1cdTAwMDeuQGlSk8JQ29ituErtjKEojuJOXHUwMDFhI7NpgEJcXCSrXHUwMDAwSjwj5a9JPmjNXHUwMDBmkVx1MDAwNNuJ/E5H9lJcdTAwMWPnj4OYWIr6ZEjybcGPq8RUxFxml+SRvuChz2qNvM819cu+co5cdTAwMDEreKpcYk2PO4ZcdTAwMDGwP3felo5cYl/OXHUwMDAwS7xM0C+PXHUwMDE0fJzgL1OAbZp9i8fcXHUwMDBijYkvu49cYndcdTAwMWP/ckwmzlxmo9X8R1x1MDAwZlwivPTKseSgdafBYtB1snvB1HpAppredP2rJPeXXHKZSVx1MDAwMZXi1k9PiN5ClM2nwFVcZlxyf8zBTfx4wy1buFx1MDAxNJ/wVkvZWFx1MDAwNNr4XHUwMDE3M8C981x1MDAwM6VHNIScqqE+wSQmXHUwMDBlMW5cdTAwMTgj3MdcdTAwMTZ6dY2tf7H4ZZBZoTnKnL8kvJKjXHUwMDFlXHUwMDA2joNcdTAwMTDRW6fLXHUwMDE1Vc1wruC7/ufXSiW6wyzfYaGO9HTm69D1tJ7iKkb3goO/n9nLmalaRW9cdTAwMDM0YyPf9yElwLg8jHyY4KC3S49us+3iQVx1MDAwZTKo+qzkPE0lZ4d+1Vx1MDAwNDlJUEyxZMGlLnWZkVx1MDAwN4qsS0RWN2LOLUiCrU9f8WLPXHUwMDA3uSVYn+SCUiuqePPw92XLgFxu8f4yXHUwMDBlXHUwMDEzipmPu8858lx1MDAwZZrsZS9cdTAwMWG3Vkysr6ZcdTAwMGVcdTAwMGUoiFx1MDAwZfhI5997gFc+XGJH/WErR8eAXHKcS1SXLSXm4puXi1nYqFBOXHUwMDEws0VcdTAwMDSvjjhcZn2IXv5gT7+trTPXTFLo0Fwiyl/Pj5qXvbA319pcYuhvK15u4TDqy1CTyoQ8XHUwMDFkf4vV32VNwvt1fGFcdTAwMWaE5ViWWZ0geVx1MDAxZIxcdTAwMTiDXHUwMDFmbLjWoHu9SJBcdTAwMTOmVX9rXHUwMDA2UjBfoo0/6/fcL1i1XCL01jbSeJnD+MFJ+vZbWmw/bn7FXHUwMDFlcsVSXHUwMDAwwWF1KFx1MDAxOTNUSu5RTFNRvfBcdTAwMGVC8vtsqSVbdjozXFyHoVvnXGZSNOLDJiHWW9WpUFuGXHUwMDFiXHUwMDFlPdlpWZvYp0Y0XHUwMDA0Sv01UGhpXHUwMDFivzFoSaHW+EFcZvdx/Xpuv3BgR7Z36vdhlXTYeO7TwpI+XHUwMDA2wM46wvDkXHUwMDFmm8fZXHUwMDExt6qRtuJcdTAwMDFBZpWZXHUwMDFkeq37UOGp5Vx1MDAxYmPQ393iJeSullIsoYjJXHUwMDA2s1xudPd/PZZDmsc1QaC7r8lSuE5cdTAwMWRcdTAwMTYo/GCXpNVcdTAwMDKacOVcdTAwMDZl2FZqeMlOXHUwMDE39vB5XHRcZvRgonxZZXKLgTt2XHUwMDFkxNOSg/GAXHUwMDAy8blkjYlV44RR6lD5r6+cgrSE0ZdjK1x1MDAxZFx1MDAxZP/OXHUwMDFiTmjyXHUwMDE2dV2wXHUwMDFirlx1MDAwZuqDaFx1MDAwZSjM/Hn0hFx1MDAxYqOj6VsyoVx1MDAxM1x1MDAwNFx1MDAxNtnau+qfXHUwMDEwXHUwMDAx1Fx1MDAwNqMlSirGZorp7Dx4yd1jYV4xraPyI5V4rlx1MDAxYz2xXHUwMDBlf5/9ZSPUXHRcdTAwMWQ3z5jM486hY4x6XHUwMDA20yf8XHUwMDFkPYBOXHUwMDAxYLQzXHUwMDExXHLiTi3uRLFlXCIy8Fn/fIVcdTAwMTPisl2DXHUwMDBlXHUwMDBmwd9cdTAwMTGNfJhYXHUwMDE23dt35ED49kZsh5LZX1ZcdTAwMDWvyeG9XHUwMDEyW87LXHUwMDE0lzuYythL2fZ3VlOtXHUwMDEyXHUwMDFmuFx1MDAxZE1gWkurJmDTg0OZcUpdTOfiZWSHKDH7q9uR+jCpZSqL+fdcdTAwMDKmk22Yl25cdTAwMDEhi3lheu8ro1x1MDAxZDTOhOuhTDZGk228XHUwMDFhi2Jbdv1iSka3XHUwMDEzXHUwMDBmtNZ6P4+ATFx1MDAwZS9fj1x1MDAwNSgxXHUwMDAwV+Kpw5KiXGKcKk0sXHUwMDE3oVOUqDc2VCV1Y58r7nqygVxuvc7eTGtd2OXDODrIXHUwMDE2Nlx1MDAxZn06a/+WzfhcdTAwMGWDyaXzjmdzl4GwSY5k9M1squDEK+VPq0m1Z/+ZXHUwMDEz3KErz1xmPFx1MDAxN5hHzu1vXHUwMDE1f5RcdTAwMGb8YsveXHUwMDE4/FxmuHdjjaU/XHUwMDAzb1ZcdTAwMWH4p9A16f/f/6FcdTAwMWGXiq3dyVx1MDAwNnxcdTAwMWTSO7iLP7biXHUwMDA39e8mn3dcdTAwMTBZbsbW3SPdO21+3lx1MDAwZlx1MDAwNW5ITns3u4nfnaBcdTAwMDdF4uQgO7zIp1x04f31tm7d79Xjy06BcCq3d1xcaFx1MDAxMkXR8OmapYs8q3BoSNHpXHUwMDExjqj7gFx1MDAwNXMjpnCmhVfzXHRwXFx8XGLyflx1MDAwM1x1MDAxNHTrkNFEXHUwMDE48z/j/YZ25W/HXHUwMDFi7lx0UVx1MDAxZCSzn6Gc5kv0WLrC2FgosyBttW9cdTAwMWHMeL5cIvmjRFxceCuOqIhcdTAwMWbeXHRF98qoXHUwMDAxWfSTTvd4M8juXHUwMDFjT1x1MDAwNpCZg9qW4lx1MDAxM5gqSKH281xc6VBl6bS/n1x1MDAxZLm5JKy1K1x1MDAwM+3eXHUwMDFic1x1MDAwNjx4iMNcdTAwMTdIf3N+pshzN/r38lx1MDAxZMWDwE7cgczRlp4/1oVcdTAwMGZ6kOxkPknpX77rI1xc0eicNjHra8z5mH3pQFvsKs+QtJ5acMqIM4QrXpzCJaDauUxebS3m0fnoXG7DZNysXHUwMDBlzYVcdTAwMWHUZCxcdTAwMWRcdTAwMTY2biVcdTAwMTNcdTAwMGJxQYBcYtBcdTAwMTFUrPGriWjh+r/wNWXFoUTyJvEjU6aqRL2oLHOKfFx1MDAxYZlKYOsyp7dcdTAwMDLamiiht0Zfnlx1MDAxM+Roh0tcdTAwMTbwY41AfHb9XHUwMDAyjjykNCHbXHL+y+rM+4z8UVx1MDAxZWFm89FnXHUwMDBiXHUwMDE3Xcs20E7Y+o080+x+vlx1MDAxMJuoh+XS9O9ifW+idrk7jFt2flRccvFcdTAwMWPrt1x1MDAxMHHou5lFabb+u+O4RTaCI0BIOrlcdTAwMTev2JyL7lM+XHUwMDE20fv5qI9Ki5Hx2TL9dDhcdTAwMDTD6lEoLuFVrv+7Y6f2lZr3v6XZOyRcYtC2q/eHbe70XHUwMDAwcaZcdTAwMTeQY3dcdTAwMWGgfuPEblx1MDAwNEjZ4NpcdTAwMDKtjqYgYquXpsvGNnppXCKbW0GFeFx1MDAxOOovZkCb6GHsXHUwMDAyXHUwMDE1ZD1YrFx1MDAwZmFGaNdcdTAwMTDDUnTR1eymj/OJPI9IXHJuIbzZsFx1MDAwYublvm/Bjaeb9F3tQIe2n8ysXGanuoa4TVxyXHUwMDAxwKDpXHUwMDEyRtgp8lx1MDAxN+RcdTAwMDNiw9lcdTAwMDZaSTokZGJcdTAwMDNcdTAwMDRy/pHM9v3kxXPHXHUwMDA2vlx1MDAwMoVFXHUwMDFl+2Thi0qlfcV1XGbyNZdwZFx1MDAxNJzNNTv90tq3go+5+Ns1LjBw/mwlR6gne1Ppp01ccqhG+mt0wn2/K2PeRVxm4lx1MDAxMD9S8FxiPepcdTAwMTdcdTAwMTRcdTAwMWHpi1x1MDAxNvXupWbFzH5tyH9Xqlx1MDAwYlx1MDAxOfbr2Pxls46xcFT+lHyeoLjCfqdKW5bd3ZWwg9xxbvdh05KiJGry5EuRw/jookv4w1SnXHUwMDE5L4pGOvRLlFx0XHS4SI9cdTAwMDXS3fD6XHUwMDE4Kz1cdTAwMWLXyonRxUh5aXT4PVeEfFx1MDAwMF1Vl1x1MDAwZskzgPnlSvxgXHUwMDA0zr99JpDB0vP6jiuMsVx1MDAwNlr/MT30pjRcIkZ1/Vx1MDAxMedY/Lxyql2QOlx1MDAxMjS9XHUwMDAwXHUwMDFkRVeALv0hgIPN4N/xm1x1MDAxN7I9n2SFlam44XzSW03ljGVcdTAwMGZMX9yA9kakTJ5cdTAwMGWg9Vx1MDAxZvN38XX//L7deJaU7k12RmtcbojK81x1MDAxNiAhX1NZea3wi1x1MDAwZZu0u/dcdTAwMWV1lp3dT+1Uo9iaK7Sjzb8z4cuKVVx1MDAxN6rgoG3/gmX7sSy2OXZcIuf8+oy6XHUwMDEzv5NcdTAwMTFcdTAwMDCcdDS/J/stXHUwMDFhXHUwMDEzcEXici9cdTAwMWa/z8LLZ1x1MDAwMlx1MDAwNDlccvpcdTAwMTYuLfyIXHUwMDEyXHUwMDE4ubZW54+dod5cdTAwMDNRcWJrV6DCc3dcZpe5jKcp24ZqXHL8PLz6iZOOWL2b11hFToZ+op5cdTAwMTa2bWgh2euhXrTLkGbrTsFcdTAwMTVcdTAwMWT+yTRccnGMavlcdTAwMDJvosV4UFbNPL6iWFuaglx1MDAxZVx1MDAxM7qftKRcdTAwMTRvxjVVO7MgMlx1MDAxNFx1MDAxOVx1MDAxOVx1MDAxOF9fOlx1MDAxMutcdTAwMTbfXFww/LRm5dBcdTAwMTfvJf+nkUZcdTAwMGU8PUJ0Ju1ZfzzMXHUwMDFh/KP57mlims9cZsZAoIRUtedcdTAwMDC5XTRI1Ku/Sc5cdTAwMTBccqLdXHUwMDBmY1xuXHUwMDBi0zia+smEXHUwMDBib/X0N5Q2uZB1MvM+VnFbX1x1MDAxMyQqO6Fl4MLaT/Etio5lNlx1MDAwMpm18jNcdTAwMWPF7lx1MDAwN9d3/mLaz35cdL5h6n/vMtEhqlx1MDAxMpipNrXcXHUwMDEyXHUwMDEzJy6z0ZbwfPPpMeTPXHUwMDA3X+nnf/eaTNx5XFxcdTAwMTEgXHUwMDBluF6X1n8xMmk8XHUwMDFmXHUwMDFjLtFx3kxiI1epvba0zKdOXHUwMDE3XHUwMDA1sIZOvkXLhW3iXG6b6oI2xbaZyPa71ms0ymZvqzFeRSOodKBcdTAwMDc2oeY07VxiYIT+60tSMVx1MDAwZquZpWQ0XHUwMDBlnKmAaW75JoNcdTAwMGZcco5Qd+PxRlwi2ObfJak70v3vzjJcZrVk+7ewiilcdTAwMTHOXGL4lUevb7ZO+Vx1MDAxN2iGXHUwMDEw1FVcdTAwMWU1yyGc7eFcdTAwMWLvbIb6KVx1MDAwNb1cdTAwMDCdJZVeqjTCalx1MDAwNWztJFGyTk0mXHUwMDEyrPrcV6vzXHUwMDA3nSPX3J4t8O5kXHUwMDAz8Vx1MDAwZZmvpKS8XHT4ZMf+paJbooaZfIJcdTAwMDEr4Fx1MDAwNMbxnX/8f+98bG3fyY15WFxisFxcX/jYn77slSN+7Fx1MDAwN2FnrIfc06eBXHUwMDE53PKj6vlLOJG4oIJcdTAwMWZcdTAwMWHjXHUwMDExUdbOlVx1MDAxNPBcdTAwMTSzgzrAuZJcdTAwMDC53Vx1MDAxZr1boFx1MDAxOP53XHSBnZxcdTAwMTffXHUwMDE1MIV0XVKfYVx1MDAwMEp9w99w5cYoUoZ6XHUwMDA3XHUwMDEysXHNXHUwMDA02d1cdTAwMTnTO5z5XGI6XGKBjFAnLNtL0oLNZWfOhlB449/dXHUwMDA1J+YnT9bBentcdTAwMTGjzKDPtUcolOokfX1oQ6ZEjTFNQueDIVx1MDAxNTm+1a/P8IB3Rrh5yi1ILTKfYVx1MDAxM8o+p8m/TyfOXHUwMDAxZ5KFXHUwMDEyODU1s5BcdTAwMDBJhDTolEV+/cBcdTAwMGXiPKgqOpUujlx1MDAwNGou+tdXWrqPWafE6t7fXbCGyaF2cVxc7UK3LL6MLDxSkunCJVx1MDAwZcjaXT94/2WD00w58LiY48tNQO0z/Lhlw5M4XHUwMDBmYDhcdTAwMTUjTzRbfkxcdTAwMDM6mOCu/Fk1XHUwMDE5T2mcXHUwMDE2a35cbpXhw6cynmSbyFpB1OeN7VxiW5mvxFxu4ZnjN8rvqLNrlvclLFCnXkvrLGYz86k/ld/cOqhJllx1MDAwYoZ5blxi3Fx1MDAwMP1dqkkvOLxgv1uozkhnetO7+KZcdTAwMDQmXHUwMDAwofG8XHUwMDFmXHUwMDE0N9j83HBcdTAwMDRcdTAwMGXcXHUwMDBimH03V8JyXHUwMDA2rFBDxUdaK8I9bWc3cLtKSkv/YtTK5tL2o490XHK+aCpKIIqFjz2N6ShwXHUwMDA3XHUwMDA3XHUwMDFj01x1MDAwZkI3gVx1MDAwZoHYXHUwMDE3iHfKfajK1KRJXG7Ti77XXGKJJdf4w1x1MDAwYlx1MDAxMcBcdTAwMDZcdTAwMTj8Qu+oaoWty526z/RPy1x1MDAxMUmobf7H6LZ+eipPPsdcdTAwMWJcIneUtHtcdTAwMTVDxnh6XHUwMDE5clx1MDAwMUx4XHUwMDE0O+dcdTAwMDOe/tlPgOZ7ZqIxhVJGxcqpr0BQZiXSPlN+lFxiXHUwMDFlSuU2s7Yua4pHdI3OejRcdTAwMGWxN/HOKHlcdTAwMTSDXHUwMDE3UDJcclx1MDAwMmhRZmdcdTAwMWUkP5R61Vx1MDAwZq2KPoYpYVx1MDAxZD5F1Fx1MDAxM9ys/N2KgZi1/mW/XG6GaV99tLiRqJVvW5+6Ns6GwcxcdTAwMTZDteOX+c7KfddcXPY1xvFUe8FcdTAwMTCZXYf9XCLEnIT5Obecklx1MDAwNPpcdTAwMDOLyGQ5oSNmj1xmglxiXHUwMDA236pcdTAwMWNsK8dR2sJp0SyKmMAljKNduFx1MDAxYz61cFx1MDAwMzF4XHUwMDFhMPPDsmGgfPZcbmdyXHUwMDFmisp2T80wXG5LZvDT5VxmrfJ2k1x1MDAxOL1ltukv/C5IirTmXHUwMDA0XHUwMDA3vTvP0lx1MDAwZlx1MDAwMWDDz9jXoaqTokg2ulx1MDAwNkFDI3iwMz7oXHUwMDA0T1x1MDAwNlx1MDAxMPimspOMOmDlXHUwMDEzXHUwMDFjUSNaeI0xITyJwnTl9PI8S0y67sBnXHUwMDExjlx1MDAwN7mAilx1MDAxNPGs61x1MDAxNkm0pE7xsYq0zHx0gfvqoVx1MDAwZv7d7SRdS1x1MDAxM+NcYlwiXHUwMDEzXHUwMDAwsJdcdTAwMTeJXHUwMDA1P6AqqDHJXHUwMDFkuILVukW+y5ZcdTAwMGUl8P1IzVx1MDAxMMc4W7k49Wamu1JcdTAwMTK1SKrqorTGr3eKSFZcdTAwMTRqe9BnkFxct1x1MDAxYVJ7ZtYgXHUwMDEzQVx1MDAwMIPX5XOjnEKN/thcdTAwMDM11jvzdYT54rebPJNYhuR3tVx1MDAxZDiqbFx1MDAwNP24bkE/XHUwMDA2x1x1MDAwNWC62YNRlXSPtstHuVx1MDAxNyw3olx1MDAwN1x1MDAxOGTAK4/V375f+YxcdTAwMTSXlb/4QamQzUZ6ckQ705Tvr8I3eswnMVrvXHUwMDBm3WNJam9cdTAwMDdW2Fx1MDAwYlx089tx9Ja3XHUwMDFkwZps1XJMyY1cdTAwMGKxXHUwMDFlbf1cdTAwMTjhXHUwMDE58DBK/2XBT8swv2f4PudcdOZf0iSdWiZm0t6rL1x1MDAxMftHVm1cdTAwMGVR87yDq1C7QVBcdTAwMWWWXHUwMDEyJd9xTC4svmmsX2Mopr1cXFxisM1YQarla4HMbeZ0PzNiXHUwMDA3O3JcdTAwMGWBp/ZcdTAwMTEs5dPKZJlCXHUwMDA1Lnqz6KwzXFxcdTAwMThVPED9/Vx0M1PUPsmYbit4XHUwMDAy5Ei4XHUwMDA0wtfMM4NcdTAwMDS6ll7Ol3ND2/OHaIA31DSJckhcdTAwMTFnXHUwMDEwq2NlT7pzY3mVYETYs/Uhxic5vvVzd1im4jRcdCbHcfluXFxDXHUwMDE1ltDzm5wzY99LkmTsjtjYXHUwMDFlXCJmyFxmXHUwMDAy2J+LaiNcdTAwMTPS18ZcYq6e8s1Ey/WWcfAhxHfkWoBcdTAwMGJSTr358WtcdTAwMWSA85XkUIC7+V1cdTAwMGJcdTAwMTRS2SgkyfBcdTAwMTfdQHKtXHUwMDFmeFx1MDAwYptSl+uyXHUwMDA1b3BcdTAwMDBcdTAwMWV0wVMxnVx1MDAwMnWWilx1MDAxY+XdWLFDm2bCXG6BslbF/MutOio7J/qdxShcdTAwMTP+XHUwMDFme/+xXHUwMDA1KbJsXaNcdTAwMGZEXHUwMDAzrZporVwi0D20XGK0XHUwMDBlnv5cdTAwMTJ19vl2ZZ77XGL/qE5WjpFcdTAwMWW4udmyuVx1MDAxY3Byn1K+tpdcZl1cdTAwMDWc4oPgo3CXZZXbRnVcIo2OridcdTAwMTeD6upcdTAwMGaTXHUwMDA2vMlXnOo4KtT4S1x1MDAxYWRzu3ysJmCc3ZhlJkkw7Y5cdTAwMGK4ejQxvte4tEZeYT9/otKkwfTpt85Sb2zHXHUwMDExaa6EXHUwMDE2s/17l1KILlx1MDAxYlx1MDAwNbzN4KI7IzM2cKVcZlm/sGJo/cVtaYTQX1vyXHUwMDA02Up24rFJK5xKfVBcdO+oTlxmIOba3azmVHcrnmirpFx1MDAwYumrfPkrQu5cdTAwMGZcdTAwMTHImXDkz4T7T9RQ+ePRiDR9LOQkkpenWSFShOAx49WMXHSBWSzjXFxcIts5qZ2YVMvKXXe/XHUwMDA2M1x1MDAxYVxiuFx1MDAxZjaTdoE8cPuFqFx1MDAxMurRfq3yu1C9XHUwMDAyrvdMkW1ccsKKeMFcdTAwMWX1WFI6mGbOeFx1MDAxN1wiidaxLFN+vWgkbe+hXFxcdTAwMWa3Rn56kPUx99qv4ULcJ5chLMRCRe+ydNtqS845g3tYl0/LXHUwMDAwY8rWXopcdTAwMDBBrDVcdTAwMWSiz72RQJvK/CNZnlx1MDAxZNIkvWbjXHUwMDEz7ebncz5cZpCG6Dr7XHJTXHUwMDFiVNTBp2vvXHUwMDAwXHUwMDA18dOJM1x1MDAxMqS8VZQ1XHUwMDE4mtm+iyMgzNOCXGJhnlx1MDAxNjH/xMpcbm1iXj9twclcdObgl9DxXHUwMDBiodfC5msv9jtjXHUwMDE0/fTSyP1OOFxuYVx0y5FcdTAwMDOnRJhgn9qJvGnq8KBRyMW5X1x1MDAxMWrutKnmXHUwMDAwnyomZzQp8a3WO1x1MDAxNFf6K5BJXHUwMDE1XHUwMDA0XHUwMDA2adRoO1x1MDAwM8hccrKaoXXsm8Ze2WOx3ilrsqKsXFzfXHJYXHUwMDEyOl2PnCgnQyRWmpTDvKWeeb1Ee89P4Vx1MDAxZNdgyEcwk8m3T31cdFXdYpq85Fx1MDAxMJVcdTAwMWVcYlx1MDAwNOyyQ+FcdTAwMDNcdTAwMDSw21x1MDAxNUlcdTAwMWJJzeHGT9xk72LR30hXZveKXHUwMDEzXHKbtW6B2GCUPbjogVx1MDAwNU6Sg1x1MDAxNIUpPVx1MDAxMjqoXHUwMDFjQ+FjkS3fIJvM4NtcdTAwMTh7lkfKzNiZYEiS21x1MDAwYtE2graU7j0+xtqP4nCq/PW8NUq3b3/udNhcdPlcdTAwMTeeNlx1MDAxMVx1MDAwM/I2XG7smiu0O7zENOqLu+1Wai20XHUwMDFmNu/F9k2Dr//JXHUwMDE2651QzHeA4U+GTYPz6yHau6hcdTAwMTmmXHUwMDFiXGZVuXHiqCapuZO8I1unRVxiusSt02/L/Vx1MDAxY/lcdTAwMWWI49iRqo/f3eSKv8fqQ6c+XHUwMDAwWNytPnj8+1xmwmjx/Vx1MDAwMeBcZopcdTAwMTefK8h2+5VHU8yC4vlcdTAwMDZ5XHUwMDEzxFfdO1xuXHUwMDAzuLf65VRa2FafoMBvuEqihuXVXWD6d9NcdTAwMThkXHUwMDE3Vq9cdTAwMGKs6mr/oGO54FVcdTAwMTCqZiEkb7iAOYbyVTid0NF7ME3SU7ulu1x1MDAxM+3PR/OR9fOZXHUwMDFjSSPHRIhkXHUwMDFmozOC3uUmsNVcbvLQ8pbZclx1MDAxMWdZTGibhp9IW2t7SbolhLrYnHFom8ixMr9cdTAwMDdcZqunJT+9w1bhXHUwMDEzzegnKWyzPYuoXHUwMDEyhUY6WWS5tiwvbJCmXHRae7WLen+V6amx0Vx1MDAwZt388W5cdTAwMDLQmILWNl9sXHUwMDE4alxmm6+wXHRD+/W4oe9p75XKI07YZe2HMt3b7GDze1x1MDAwN/Blf1x1MDAxZfFq3OT6elx1MDAxM5s1d9q3XHUwMDE537PSJnbbseTcXHUwMDAxk1x1MDAxN1iWqSyZ7Vx1MDAxYUHXjkQ+TVdFXHUwMDBl81x1MDAwNVx1MDAxYvelgVM2q1x1MDAwMlx1MDAxMFn6XHUwMDA2qHVZpThKXHUwMDFk9uLxglx1MDAwNk4v9DdcdTAwMWSqMCnSXHUwMDBl3zpcdTAwMGUzXHUwMDFhVI8zZlx1MDAxZK1vx1dcdTAwMDDzgSr1XHUwMDAwd0/nmafgw2ZP2uVcdTAwMGL581x1MDAxNpex+DTQj4dfj01cdTAwMTNIXHUwMDE3mNLPQ33gPJDbgJxcdTAwMWMyYjl0f65cdTAwMWL/SFx1MDAxY86OMz5/fuvI8XI/wiyl5fNcdTAwMWFcdTAwMWOZNf5eNC+BXHUwMDE5bmDyXHUwMDEx208/e1x1MDAxNyq99+WaSppSIJR27mtq1WhF51x1MDAwNTjsIEemcORcdTAwMDRJeJZcdTAwMGWbmFx1MDAxYkC3XHUwMDBiJ1+ayq6VJ1x1MDAxMrxcdTAwMTEguaFogvAtvGFcdTAwMWbIVya+Sj61Ylx1MDAxY/U4XHUwMDAwZVx1MDAwM3pYvHmff6fQLqlrfpSUTzjZXHUwMDBmIbDknTv3iytQz6Fcclx1MDAxMozCQ7qDgnLKXGZONSdZXHI+4ltv7nD9wFhCOFx1MDAwYkYhK5z8c1xm+Fx1MDAwN+6ixU/5XHUwMDE3ejU7Nu1gS1x0QCunXGa2NFx0YcIkZiFcdTAwMTf5XFz01V1oXGaK5efkOZxT8dh5wU8+aUp5XHUwMDA35cxcdTAwMTj7/XBCxZ/coVx1MDAxZlx1MDAwN/i4+C1pn6lsjPJcdTAwMTlEks1zsHGs62DeXHUwMDFmbFx1MDAwNS48XHUwMDA231Gu23WzxpmijG50tfdcdTAwMTjKo7yQXHUwMDA3eFx1MDAwN9JcdTAwMWGOyMUp1U5fcEkgXHUwMDBlg67B9sCsLvBJbU7CejqBXCJWZ0qT6zTZ+Fxuwo1/UJgtXHUwMDFkXHUwMDAxXHUwMDEzSsXgXHUwMDBiX7zzXHUwMDFkW6LlW2qWXVx1MDAxOVxuradcdTAwMGVcdTAwMTg5wkDpNuNxXHUwMDEwd0z1XHUwMDEwb2z8XCJfXHUwMDEwdzHwsnvv2cuNXHUwMDFjU1x1MDAwZazyI1x1MDAxOFx1MDAxMDRXrXZcdTAwMDU+R702WC3jXHUwMDEwedZcXP7JwvNcdTAwMGV/qVx1MDAwNH3kRMgqqWBcdTAwMTX9I3OFclx1MDAwZvfjpKiLSrLh8m6Od7BNnFx1MDAwZpBavpZcdTAwMDFcYjdQ3jq1XG5ST/jp8Vx1MDAxMDyT8ohn63ipJlx1MDAwMGbD8Vx1MDAxM4qB9lx1MDAwMX9cdTAwMWJcdTAwMWZcdTAwMDbQtuj1XHUwMDFil5VeeUZ7XHJcdTAwMDM2fELCXHUwMDBi5Fx1MDAxN/2T/Fx1MDAwNJJ7OvHiXHK1XHUwMDE1KbX0ZWtbsSOLRp/hr1x1MDAxNi6L41x1MDAxODzXynmdiVx1MDAxNSFcdTAwMDB71Ka5qUdQMarsb54071AjKlxmc7DVXCI986ukXHUwMDFit92lwJ5OOvYk8fRcdTAwMDBcdTAwMDSjbD6G9qZcdTAwMDJR3LPLdI1cdTAwMWYviFZcdTAwMWNcdTAwMTLaXHJcdTAwMDCK6/Um1OUxYnmtRNQj/JhZXby+VFx1MDAxMCzTc+snXHUwMDE1nTySXHUwMDFkU7KQL3x2jZY+Z1x1MDAxYkyqXHUwMDE4Uy1HXHUwMDA3W1x1MDAxMMn2lpFdeUlukUc9Nbf7XGJOXHUwMDFmxLO+krgrXHUwMDA0ideVLr/irf7SmNa9bY3OJztY0tWLXGaMXHUwMDA0XHUwMDE5XHUwMDFk01x1MDAxMJ6cXHUwMDAwKYR9fc+vx3KXISOSjlx1MDAwMizWuTBMkZAhrlwiKIj3XHUwMDFjS/swvcrTYoet6+VFkFx1MDAxY/5cdTAwMDN12EB+NOpcXEhLePDfYVx1MDAwZfJ7Zlx1MDAwMZhcdTAwMDdcdTAwMGW7sVx1MDAxZrM/9vlM0lx1MDAxZNSSr8G93zBzdm99WXbQkTHXuUXQoVx1MDAwN1x1MDAxNG3bK3dcdTAwMTFpRniDvWAxVYqIjTl9XHUwMDFlsM22qmv1fEWLM1CatZAmXHUwMDBljFOLnPVcdTAwMWGIR4H302/ynJ4meJ5cdTAwMWVPRShYlEpcdTAwMGXeV3tRvuPs2FtcIo3DXHUwMDFkhEnq6myB+5JloKDWZEvqgvlucO3A3VHgR3y6K/+i7Vx1MDAwNlx0VTRcIpzVUYnDXHUwMDFi+Ny8W6akSiyKUCrx6LOSXHUwMDAz1uqBXHUwMDE1nndcdTAwMTBcdTAwMTXelrfeXHUwMDFk+kWaXHUwMDEwaFx1MDAxN1x1MDAxYnNcdTAwMDSGSl59U+9cdTAwMTJcdTAwMDGTXHUwMDAwlcK4q1lW6X9bzlx0XHUwMDE11Vx1MDAxNL/qh7NcdTAwMTIkzGh81FxyWY0zikTBXHUwMDExIy5AR52lxaijtfnaU8R82zJcdTAwMTO5vnBxyFx1MDAxNdW2XHUwMDFkYnxStpczrGm2RuNcdTAwMWS0v1wi/SPgXHUwMDAxWXbbXHUwMDA3/jK12VloXVx1MDAxOflcdTAwMTnlTZu63Vx1MDAwMlx1MDAxZtpxXHUwMDE0XHUwMDBmMiS6fyCjIKumS1x0lFx1MDAxNVx1MDAxNbU0opdcZpuvkzCLq2TzSVlEZrmHIHpcdTAwMDZuSlxiwslcdTAwMDSBo0r6ZtvU6vLXalCgRWV0W7iLtjFbYICR9lFcdTAwMDTEQ2nAYs+We1wi00395JNytcP7e7v0Olx1MDAxYSV2vdnNhKrdobTwY+Tl71x1MDAxY6voZc7U9Vx0z6aTn3pcYulWlbLdc0SqwNZcdTAwMTGs8HoxZVx1MDAxNWj3OIiBezpzjsde6VQ3XHUwMDE5KqdNXHUwMDA2cVx1MDAxM4t0bpqrxcPmcYd98dZ0Lp2/6v/1dt80XHT3//GozFx1MDAwMcfFs1x1MDAxZXA/4qNE69AnOqZwwE1Kilx1MDAwMdaHe5w0121jjJBcdTAwMWNcYnst71x1MDAwZmG+l4FCviyhZpRC+K99PNDZUZF2PsI5j1FoaCtMM1x1MDAxOPH3rtxcdTAwMDfF1ZQ7mJGYsdBxfUZcdTAwMWazzIy51U9qXHUwMDA0kj+sQ0K1wyOszm7OoYPvJ+fpsV3a7sXh21x1MDAxNUifz+FcdTAwMTiq6uokTzdcdTAwMTlcdTAwMTOQXHUwMDExPFx1MDAxN1jqu5yHJlumt+CrjFqkqCOtjm/30a3NXCJcblx1MDAxOCbMYSkx6XTF7sZcdTAwMGWSo7ZbbVmQPs48l9t8g8Orn0hTl5RKbPhcdTAwMTdjmk4l3Fx1MDAwNcRUJUGfXHUwMDA30l8pnSfS3Fx1MDAxMDNsXHUwMDFktf4lg1x1MDAwNVeXc8gpPaOnXHUwMDEz6Ubmq1x1MDAwZlx1MDAxZFx1MDAwZlx1MDAxZKhcdTAwMTQ85Uij8WeRXHUwMDA2Jlx1MDAxNlx1MDAwMWHHo1x1MDAwYiFcdTAwMDfn0UTpKpJcdTAwMTJtXHUwMDAzWXs8pskhcL+Iulx1MDAxZnOZlH4nMqSfgKmBZfX8mc0x11x1MDAxNFEx6Vx1MDAxNSbA0HhnMNxcdTAwMDXFY8Pd+42zbi+W8ddY5Xpsa4nJbVx1MDAxYkhcdTAwMTat+C4wspRE71x1MDAxOe/r92DJSyOu0DtcdTAwMDfn6ethWyCAXHUwMDE5zY9HP6iGlWvwqdDdgF5u5dWf0j5cdTAwMTBcdTAwMDBcdTAwMDBocl6J5KxcdTAwMThGYVj1JYieZaXXXHUwMDE0u/pxrt/MxX3wYVxudG0+QcRcbsD3/Vx1MDAxOVx1MDAxZEaNrzZ9ykxcXFufjSjgWlNRXHUwMDFlqVx1MDAxZSE7VMFcdTAwMWRcdTAwMWO5zMHDXHUwMDAwbmOg16jkbMpsgatcdTAwMWQhgVV1ve9Tkm1cYs3on7HuQMWidpv16mXBlcdDMcpwgStcYtHBkttbju1cdTAwMGYkYZk/XHUwMDFmfjruScOLffFJ4ejU8Vxye1x1MDAxZNzMcCDLcTpcdTAwMTRTpuFNT887auY9MKSK+jq9XHUwMDAz1XbiRHvUKahR8lx1MDAxYzjiqH14vlx1MDAxYls5bCz1cXq5w2a5b1tAuq1FbGtWhVx1MDAxYUXqKNREW9c0IzGdZlx1MDAxZP/GXHTIzmlueSyXXHUwMDAyidh2u71FhttcdTAwMWSd4lverFx1MDAxZZn9rlI+t1x1MDAwZVb7TsOKTflplmzFeZxcdTAwMTUsl1x1MDAwNXIs3SamnXi65DFDmjx/lkZcdTAwMTGY7t5cdTAwMWSDTohjh5dGhSDusyqVPDxcIp5ccllcdTAwMWJyXHUwMDBmWm96kXy+4Fx1MDAwNjI1XHUwMDAzmJWxYJCOsuLnkeBwpn1Cx4TeffI6xTHdeV9oyFx1MDAxZqpd3pz84excdTAwMDWsXHUwMDAxwDT3myBP+f2SaflcdTAwMTS3fYshPuLZYqbGbj7QTe2p7/DSXHUwMDA1SHxzRIigUXRPkHPrXHUwMDE2ZVx0XHUwMDE0zMpcdTAwMWI5XGbFgYeik1x1MDAxOUgoW1xcu635JJT0JYaXK1x1MDAxN2VcdTAwMTNOYC9LxHBIae9BXHUwMDE5/rG5cFx1MDAxOH162PO+RjJW6GFcdTAwMTjq3kz9sJE0WLCmXHUwMDEwmrlcdTAwMWbB4dgs5Yf2SpJL+Fx1MDAxNkPL5F6KfJXLRIej8vT8XHUwMDBmXHUwMDA3eI+wnK2BXHUwMDE1Rzd2na2IXHUwMDBlqTUy7lxir++LMFx1MDAxMC9QOFxivD5GiDuWNEKLnIU1WVx1MDAxNonUQFwiYOEuXHUwMDA2XHUwMDFjRVx1MDAwZf68XGLwNVx1MDAwYvs82etcdTAwMDU+3LXTazJiXHUwMDE2Nk/M8fX53iMjy+BtiVQvP2TSKn+hXHUwMDFmMe0nxqRi+l1aL4uBtZjrmeZlWDGoXHUwMDFm36hcdTAwMTW+dIY8bdpcdTAwMWT4sP+kLVx1MDAxZZhtRGxb2VV900xX17h99nbZ0OF2XHUwMDExl5dcdTAwMGL2XHUwMDBmXHUwMDAyiKr7UZFzrLB9rV5lXGZxXHUwMDBiXHUwMDAwtvp95vpcdTAwMGLSP1xugVxyW4alj+9o+Vxmgse6OmDZ5mi6fdDf3K005ZabJ1x1MDAxYX5jXHUwMDFmU1BZm4+X05rRyEHCXGJcdTAwMDCqMrJcdTAwMTP4YYVcdTAwMTJcdTAwMTK0KflcdTAwMWX9+83ExMRoZM7OrVx1MDAwZcBxJbtcdTAwMDZZv57e8OSEaalLc5JDl4ZyXHUwMDFlcUW/xDRlbVZhYPKXdbNccrI5672Wx0lcdTAwMThaXHUwMDBmic1cdTAwMDL6XHUwMDFhXHUwMDE5nlx1MDAxNaSlXCJcdTAwMTCP+1x1MDAwMexcdTAwMTBrrS7qrIB2QMjVh7P/XHUwMDA2/N2IvjEx689EOLH/Z/9BlprUb8RyXHUwMDE5XHUwMDFhXHUwMDAwkPfcj44v8iBFmfWi6L1QXHUwMDE2ZjRi+a6cRVxi+yzoQH/4Xj5oLe8yYfyG81x1MDAwZtdHIGzC0ns9OuGFmlx1MDAwM5MrL1x1MDAxODSSifg9MJWdgN9WN4GWkMj9nkIp9rjcXlx1MDAxN/L75o4+mYKRXCL1KiNcdTAwMTC8lC/A4ViQe/FcdTAwMTlzV/a8T1qj4Vx1MDAxMCx+Ykud/d/5Y1x1MDAxNVx1MDAwMFx0iOG/dId/vCpcdTAwMDFa9FxmM0+/JveWY879rkJcXK+cMH+9XHUwMDFhJVx1MDAxYyitX7FcdTAwMGJOxbngs1x1MDAxM272XHUwMDE1UPd4TE2fsoloQOBswpRWm3A0wk/3XHUwMDA3e9P5+ubd1dbdXvrtfSSoZHbg69Llh1x1MDAxZPxcdTAwMTA5/J42m8Z/b+bnkMVU1qlo3nml2Vx1MDAwYrEl6uTwXHUwMDFlSjpccrFdXHUwMDFjglPMw1x1MDAxZpnHlzn2m1x1MDAxZFx1MDAxZsbnJeXu7qOarId5/mF84FxiNFx1MDAxMivBkMxcdDGC8fbbrFx1MDAwN2X2+UudeFxu4yZ79Vx1MDAwN1x1MDAxZX5cdTAwMWPug6yQXaNFb1x1MDAwNzp1QzKSmMOIiKUmJqnZl3KqfppwSZnbSdfzXHUwMDE1wcTetFx1MDAwMITceLN/OUbuQlx1MDAxOCxouTVNn4Z0qzSwV82Bn1x1MDAwYpXzwE5oSlx1MDAxN5xwl3fvYVx0XHUwMDFi4qFcdTAwMDKPzoV1qighutDCRYHLKCwkiCn/lvyyN0RW6+lcdTAwMGIg8HTZ9Y/lUFx1MDAwNtaZ5/s6NC7lVopT2Ylcbp51+b7WZPuOTrr5O+3M1Vx1MDAwYs5p8Ds/3uGmStdcdTAwMDErgHVcdTAwMTDAOMEmXHUwMDEyXHUwMDAyhVx1MDAxNUCk8VqzXHUwMDBime47VlMutniKcfxDUm5/PT0n76OXgdFX4Fx1MDAxMuLghzdI86SFfIfuZqjK4jRJNuNGs3fOMnCikX6f1cyV5Fx1MDAxNL5e9MbItWdcdTAwMDY2i0fPY4TyQto9y3PWdla+XHUwMDBifszOzXo5PMhdXHUwMDA233dev9OnXHUwMDA3yqFBL4NcdTAwMTlxuPhBTYlAQZJ423X3Martd5+Ir8ft1XdW0iBne1xi0u2RLz8ugJ1cdTAwMTVcdTAwMWImf/z+6uFcdTAwMTZcdTAwMTTXrWyEg3dcdTAwMTicJ+UuTchfKtToeF/3TCqfzlx1MDAxZe27Pdyy1aphXHUwMDE47qNoYTVYjCRcdMxcdTAwMTe5+bnKs8BcdTAwMWPfOEXm6SfqXHUwMDBiNMuGW/BByVx1MDAxNqnfIXHGhyVV/tFB9+lcdTAwMWb49/aAXHUwMDBi/PjDjpfVretD4NLsXjRcdTAwMDROpVQ4vfLteonxKbzTVH6HXG5riJwslbL7bTV8XHUwMDE0OJh8+F6OKYg47dhcdTAwMTU/YYj6VIXlXHR1fmE3XHUwMDFh7YJ7/Fx1MDAxNpGgQ1V5+tZ/1yC0OMfQQlx1MDAxYi3XtHxcdTAwMDMvfS0h21x1MDAwZUx1XHUwMDBmXHUwMDExk5ym6Yg7/3Tlp5qCO6ctoLn5eqY28XvUXHUwMDE4XHLQNjTvO/Fijp4lvZdApeHrd6xcIlx1MDAwMlhcdTAwMWYlJDXu4o3h3lB34tV6oVx1MDAxM2QgJ6OqIEt/JVx1MDAwYpanb3gm1Vx1MDAwZj3zQ4lba5so2sdcXCSLufXAt59cdTAwMWNMdHXSIb45NKmGZGM5XHUwMDBl4ICyV0p/sSjDtZbjyzdW+llVrkN+XHUwMDExUIYqXHUwMDA0dzHkQJYnXHUwMDE481x1MDAxM1LIqEVoXHUwMDAzYn/LKkZXlVCfgUVRyvBcIu33XHUwMDE0SVx1MDAxYdxFSFNcbvA4RoPFe/lZYFx1MDAwYlx1MDAxNPFcdTAwMDXLvFCuaL1cdTAwMGXfljT3mCCoTKx1XHUwMDA3N9hcdTAwMGLAqtjf9MMoocphXFyXMfxcdTAwMWTlT1VcdTAwMDfzXHKPXHUwMDE0Zjra5COX3Vxu2GXg/Vx1MDAxM1x1MDAwYt2O3Eo+XHLo981ShFxuXHUwMDE083EnXHUwMDA0w5yFW48yYGFRXCI5e6BkXHUwMDBiinxcdTAwMWX8X8Ld3q1oZtOWXHUwMDA2dWtk9oaULfab3DuwVuxcdTAwMDRmklx1MDAwMfVcdTAwMWGKhlFcdTAwMWEu21xm+2uG6chssVxyM3jj9z3pNm36klwiazxjXHUwMDAyYyGSXHUwMDE4T5Lxh+SCanK/gGe8XFz1giPbTOBcdTAwMTfj2Vx1MDAxOU2eVlRcclm0S6mhNFx1MDAwNztE2Fx1MDAxZZpbXHUwMDA09fDaUY/JbXC7SKya1Vx1MDAwNJ5rXCL0c0vebPGRdFxcP/uXS1xivN04aONs3DEptFx1MDAxOMCbuU5cdN9cdTAwMWKBvYSPq/O7Q1x1MDAwNMRv7/TTW2f18FHtmFZqjkddm1xuglx1MDAxNC3gcfFE6lx1MDAxZILo+pmmXHUwMDAwpIWkLlx1MDAxN5ydfd9gkJHF6r7rJlJkKtnex5Gkn33fokpwn/90tOTJ491Zdlx1MDAxZbGo43LvWr1cdTAwMDOcYFH2O4XmJ1x1MDAwMPHyXHUwMDAwQtxyYSC6tXTY54jLotsudz1cdTAwMTJIKbLUwFx1MDAwNnjD1/d9SNNcdTAwMWH0MYPVjpJcdTAwMDDJNPp9j573Rn49NtNa4djsUVHWZfrB5VwitDOQiE7EfWWt6YGw6D1cdTAwMGKabS5cdTAwMWHC24nmxc2YXHUwMDAzXHUwMDE1fjW2lEFvXHUwMDAxYd5cdTAwMDbxgv99NGZcdTAwMTD581x1MDAwZcEpY8lcYuWoubjImm5cdTAwMDDNneJaeYldiaJ4oDJPxVx0XHUwMDExJEtPfiVLXHUwMDFl60t7WEzz5mJWI+u5rJR6p4zEJl5jQFx1MDAxOXtcdTAwMTSOYqRT0i6Ci1M/+fTb93+3/tKJXHUwMDA2PU3LXHUwMDA0XCJlXHUwMDBlot85LI/7gVxmXCIjnib86Cii2LVcdTAwMDOXXHUwMDE2kFxmlmFcdTAwMWFO0T1cdTAwMGK1caShXHUwMDAxd2tcdGLkM3i81VR4vjfJLujg+1x1MDAwMPSlVrRfXG5g4qLZcmZcdTAwMDCPvDl81U99kH97ilxuMzrim6FcdTAwMDDvXHUwMDBi8655Oz1PtuDJXHQ1siXH8XLjXHUwMDA3Jlx1MDAwN8tnXHUwMDA1XHUwMDAzn+jojE3KPVx1MDAxYt3e5tBJwysk4HE5XFzwS1xcjvZcdH47I8xcblLcLsdcdTAwMDDhf4u2+J2WP5a7INElpNlcdTAwMGZO2CtHWLCDo8lcdTAwMGJTKPPjrtRcclx1MDAxZu5cYtY0XHUwMDA3m183bIGLOjY1Yds4XHUwMDA3XHUwMDFlXHUwMDE3SFx1MDAwM5vR1k/pxI5cdTAwMDZcdTAwMDUtJjdcdTAwMTRcdTAwMWRcdTAwMTA5MkOuaZdcdTAwMDXOaFx1MDAxZmVcdTAwMDDnV3tcdTAwMDfvtkFEjahmeVxyXHUwMDA3ccXh64umXHUwMDBmJ72ofIhRwIUv2YCrreoyMCyai5G67YJpJqh3XHUwMDE4IZRzITlcdTAwMTQ73+CK0rxz7fPeNFZcYriPdLyTmc5cdTAwMGLrXG5tTpSV5Fx1MDAxNYD0+q2v78UgXHUwMDA3XHUwMDEyXHUwMDFhXHUwMDAyv71nTJWxMLHK2aMt4kvCXHUwMDFi7XI50W6wqOlDn94xKlVHWb9+n0rL4Vx1MDAwZYaoI7hcdTAwMGamSZxcdTAwMTlKaWSTr5tL8PG8XHUwMDEyxtXwhn5cdTAwMWSMdVxywe97brBDkVx1MDAwMIJcXOfQulx1MDAwMInQOcWIa3SFXHUwMDA3KENCxFx1MDAxYzo6XHUwMDAzXHUwMDE0uDZr9jBNMK9cZjulXHUwMDBm5DRcdTAwMGaLXGaWoNibqVx1MDAwZVx1MDAwNJloU7Jxr4lsR8S088lcdTAwMDdPjKhDqu3IYVx1MDAwN2JDdsPSMUjYVC9cblx1MDAwN4F8OMhDfvKYJuhcdTAwMGXGn3CZXHUwMDFmemjVvvBcdTAwMWaRk5Zma1x1MDAwZlx1MDAxZFg7kCy6zVx1MDAwNGhXoVtcdTAwMGLDXG7xO+JYaDdcbjYlNKtBPHe9blx1MDAxNXfG+Z4oJpU6MvP9MzTC++ifX37aL6A/RPDY7f4mR4tcdTAwMWUhXHUwMDA2qEmzPa++8lx1MDAxNVx1MDAwMqJiXHUwMDBl54PXhECNbUl1xTytOaA3NHmH+Fx1MDAxYrme1lx1MDAxZF9cInWV2GGL0rc1XHUwMDFm56ZcdTAwMTY2vKBnXHUwMDE5k1x1MDAxNZKLj/68UdeHhFx1MDAwN1x1MDAxYjZcdTAwMGXn8vWcSZ06dbrZyPBoXCJcdTAwMWbRjuipM0VRdP1cdTAwMWRHerlcdTAwMTXQXHUwMDAzgr7iXHUwMDE011NjNVx1MDAwN+DksT5LZSvl58Fk7CbAXHUwMDE2uvS08UK7LH/3hl6v+7fnVzhccn/oXHUwMDFjsIBhzbtXVC0uXetcdTAwMDKbSGiYRKO84NPuUEoq+Vx1MDAxM4qQ6YtW+Fx1MDAwNiCGPszN+UDAWIRRXHUwMDA0nsXTclx1MDAwMqX8XHUwMDE2OJL2XHUwMDEyyNhaNz9xXHUwMDA2jMhcbvqIXHUwMDE1Plx1MDAxZTKFj6+RLlx1MDAwMHvH6LFcZiF+KFxiq6+ftDxyXHUwMDFjReMv61mPKJ+/l1x1MDAxYVx1MDAxOZnK6Vx1MDAxNJnoz01TN1x1MDAxZVTwzNTs//OmXyCgp4fL6OIhWiBVsFxyfahcdTAwMTS0yPjUaN7gq0Eq2oBNRlxuT+e1nzB2XW69/s1cclT/Mzd37Hkji8hGolGITHm7n6NcdTAwMTag43kr2Vx1MDAxM/ab3ZmlM0+iuOT6Pkzppn9cZmZcdTAwMWXJ1WRAfvbUXHUwMDEx1s1cdTAwMWGroDzTu3dzyzi2XHUwMDFkmzjlxkbjNYD0uviliu2uJdzk8dLGu95jNrLVPjye0yVVKk1cdTAwMTJRJ8f8kEsuVlxyNzCCLM6FztZcdTAwMTB1sfbGrlx1MDAwN9PAJTpcdTAwMWYm8maudI/9UFx1MDAxY43WN3OU5eOg9rBmkjM9fntcdTAwMTA2XHUwMDBlrc4/NbQ18MPzbMFZJonvPY3B2Vd8X3hC9W90XHUwMDBmU3dBWoOAXFy+uvEubUtaoN+DWLlcdTAwMTZCXHUwMDFj+jxcdTAwMWS0vHqcKlxii9hlsy7wRDhyq1x1MDAwNlx1MDAxZcWmt8FOb1x1MDAxNzdcdTAwMTi6jlxuXyesmiVBXHUwMDE3KtWPNDCWQlxcXHUwMDFhfnigfcZZe8pB14t6/vA8XHUwMDA02ZuqMZahzlxugFxylzi6Y9hcdTAwMTdcdTAwMWXckoRcdTAwMWKj01x1MDAwMSlslcyaSsXfdIme8HXnoXRcdTAwMDaKhnZBxEHmPiO1K/Y9cTag5DUwglx1MDAxOPlxwFx1MDAwNP7dvfnxu6/ZbCH5gtxHu4MjXHUwMDFjKVx1MDAxOKk85bg/RFnuy3vytnDbXHUwMDE3npnfPsTwQP7keFx1MDAwZoPe91xyoVwivGVFg5LhqNqLT4FcdTAwMTR6/mCwf1x1MDAxYzVcdTAwMWXAR0gs+nE/Rt/m4IslXHUwMDFmXc7zWpVKy6dE1UhutXlyRidQP1x1MDAxOTAjeppCo+rL0bnVoIVcdTAwMGWlucgk0mbtk4HI91x1MDAxYprl7G8+YadcdTAwMDS/b8KMizPizPwgmCaY93tcdTAwMDVvXG6qWILGvMjwQv2YLJBCSlx1MDAxM01cdTAwMThiXHUwMDAzo1x1MDAxN2NXV/Vq8lx1MDAwN5BdJP8q2Fx1MDAxZVt3/6w9LfVcdTAwMWTQftZHc0yCKs/rtcdEbiHJnlmOS4Eq5meYx8rVXHUwMDA2Jt+PxLygp7TQLaVy451/R0+xhOnk9WJcdTAwMTdcdTAwMTBcdTAwMTZccpCjgdij/+e5XFxMTcyqSGD7alxigrShlyVcdTAwMWHei1F1JEEyt+k330DysOvCnVxc38pvj1B/PTVcdTAwMTYhzdY0XHUwMDE4/lktdcBcdTAwMWUzf09cdTAwMWZI6FeSfVhcdTAwMDNcdTAwMWaKhDXrjvrnPl69W5mqsi1j3d5yn4hcdTAwMDHgTVx1MDAxZJM3bUncULgyMzvu4ojT91Q/1LlNLS/Gr1xmnbP+OMdBo4/VnSVW4kVcZsVfsEipiFx1MDAxNrlhXHUwMDFltmq6hNV3QMU5dTyK67A79jHJLS51rb7cvC/pXGZcdTAwMDBcdTAwMDBcIqSH21tCW8aK6e47XHUwMDE0wuXmp3RCPXlI21x1MDAxYVx1MDAxMC6H1ac2va+3XHUwMDAzRVx1MDAwNE9D8lx1MDAwYr8tl7ZcdTAwMDQmXHUwMDFiPdd8XHUwMDEwS4e3gHCiXHUwMDFllP3o5ZKxm9NcYvD5XHUwMDE2RKrHXHUwMDE3xSdNbs1u1sEtXFy8Xlx0muRlWPpcdTAwMDGwXHUwMDAxNo6HZWCiTeeaRlqgwNXj62U1dDp66Fx1MDAwNNTGJ5XqTI5cdTAwMDYgTYk2XHUwMDBiXHUwMDBmccHpOXp9s1x1MDAwYibpgz7Ymj/Yok7PwtFcdTAwMTJcdTAwMTds4WdcdTAwMDZYZSPdTOHq/HDmkvbWj/nJKm/i+k5yXHUwMDFkwWdcdTAwMDODd4qGvYN06Iw+XHUwMDE2IMy89lxmXHUwMDE1fOn6XHUwMDFix+hcZkhcdTAwMWRKNPIxTJPA5vt1L8RcdTAwMWFcdTAwMWY7uplcdCA3hGJORVaiNoAmXHUwMDAwcTduk/HeXG7MXHUwMDFi+CvmjJ5yYM+oXHUwMDA0LIP4rbPdNfN2VmhcdTAwMWV5Qp5x4d9Z80HwaIOCM4yzRFwiU4Pia7Bjk/A8t1x1MDAxM0YnY1x1MDAxMTPtXHUwMDBi9Vx1MDAwMVx0WGeX642dWddcdTAwMWYwtXdcdTAwMTegRdnl8YbATYrZRZX8lubjszcriyQq/Fx1MDAwNfBEs95Z01F6/lx1MDAwNIBcdTAwMTS9XHUwMDEzX1x1MDAwYlx1MDAwYlx1MDAxYtiUc5bPRJhcdTAwMDDpsunv24jM5+MjXHUwMDEyKqNpXHUwMDFjXHUwMDE5oDX5p26dr67i4SBHMSs/V7Xk2y+rS/1cZnbRnX2szV8svPFe71wi/oRskrxcdTAwMWQt+vFX+Dk/VlWoXHUwMDFks1xczqM7djowXHUwMDE0s/olM1x0oLN7Uky3eJp2WdjufvR75fXcnXz2er6qbuwtklx1MDAxNlo68cs06eJhMLDE10hcdTAwMWZXuo5qVlx1MDAwZVHNZpYhaZjvXHUwMDA3Y/Nz2ou47tE8YPV6hVVcbpNj73ctlCM23qKiXHUwMDE3zih+4HCPPHHfxfMh7sy+XHUwMDFhentcdTAwMGY4XCJVMSWOXHUwMDE4SdXkcYvCz1x1MDAwMsxcdTAwMGV9ouGxmSZbWVx1MDAwMkAmyGSJfy3AXHUwMDBmXHUwMDFi51lUXHUwMDFkZ4BH85vaW6hcdTAwMGbmXHUwMDFjLDe/onpd3vOt6GNXSVB2vZL5qzW8SvBEb6gxXHUwMDExNTuvMPKr9ItYN8HZd+ZcdTAwMTI6XHUwMDAwV7VeirM7/Jaw/9xLUNWlrNrqTuA036AmYdp+01x1MDAwZtI1izY3u1x1MDAwYlx1MDAxYl5BY/pcdTAwMDPB+sS7XHUwMDA2yq7A3/VcdTAwMDaNXHUwMDBlI2iewnDiY0GL6rdFXHUwMDA0U0L39D8jSYbbKvnTXHLCJTJcZphcdTAwMTebOCBoXHUwMDFj2FasXHUwMDA3X7lcYutXqDxIai2KXHUwMDFl+vd9vKatNfhI1Fx1MDAwNIblOo5h6vepZlxmNzFmLDbctnozXHUwMDBlmoJz/HJcdTAwMGKqNrI5/mGvXHUwMDBl9PPwXlRj++JcdTAwMTMu5NxKv3rTV1x1MDAwZoxMzUW/v+uhR1x1MDAxN4pGZ/afa2VcdTAwMTj2/USU+V0vtP72J+GuerLhYq+im2dqXHSgXHUwMDE49Fx1MDAxZq8+/rz6XHUwMDExkUQg4dlX/dyyIVx1MDAwZTpcdTAwMDPc436RXGL8KSpAmP5cdTAwMWJcdTAwMDOOMZ3fmI/levw7T1x1MDAxY59+95h4KcN93YJmk7acvoFXtIb6RVx1MDAxZcZHtfcr0K9XrozkXHUwMDA3KkVpmzBcdTAwMDHltIST4Yx6rvzTvrJ/xeOlPD+mf1x1MDAxOFwiaFx1MDAxZF8p4KZcdTAwMWLsz85Kj2igIbo4uijlXHUwMDAxXHUwMDExg1x1MDAxNtWmifuU0z/POb7oNd97YpS/XHUwMDAzXHR+/DxHcvk/8a1cdTAwMTjGXHUwMDFiISn7ZztMZ56x7eTkZpLUq/xcdTAwMWKH+6aQfsJcdTAwMDI18PNwXHUwMDA39FxcwFx1MDAxMO2/e0ZcdTAwMTVQwUJmQbBcdTAwMGKP1mEtXHUwMDExXHUwMDFkvrZ6vlx1MDAwNcf7b05cYs0z/pNjdVwi/s73XHT+86xg9lwi1zNcdTAwMTJcdTAwMDDSuVwiXHUwMDE4ufpcdTAwMDElt8NHNTxMeEumXHUwMDE4wcLc9PDeJ3vAR3r7zqvJ/vdaf2NcdTAwMDdsXFwx+UNpz9j0XCJKjzlcdTAwMGa5tv+ALzLfLldMM2TNkFx1MDAwNlx1MDAwZVx1MDAwNoRcdTAwMDK+T4O+XamXvlxmXG66lWolXGJbl1wim5gwSZibXHUwMDE5RO2/Y/FcdTAwMTGZ/8Ti/MXies84aXPsdczbSeBTj51wXHUwMDFiIZa9TXRHf3/fmFCp6eqFXHUwMDE4lVx1MDAwNXrcXHUwMDA0XGJcdTAwMTfoZFx0k4E87L6F/pVcdTAwMWIsXHUwMDAznv5PXCJP9vFBz1x1MDAxNX6v/us+XHUwMDFkavDzilx1MDAxNlx1MDAwMFx1MDAwM9eCTzx/XG6PXHUwMDAwvY5cZsqkyDZKP4CktVqf0dPtkFx1MDAwYtQu3/azXHUwMDE25URcdTAwMWZcdTAwMDUpZOx/rz14K+tTK4rlR4z8Zl5cdDO2YilQXHUwMDFlmNPRku37INq6+tPiXHUwMDEyRSfCk8RcdTAwMTUp7aHt2sKu7/GoQkYgPy6/Klx1MDAwMtNYXHUwMDBiulx1MDAxNOpcdTAwMGKGXCLf+KNm3r+akaD1TXRcdTAwMWVSy0s/XHUwMDAzXHUwMDFjwedcdTAwMDSt61d1sVQkQlx1MDAwZajFxULQo4L5nrlcdTAwMGVcdTAwMDNFblx1MDAwM7Mgt0tcciXSOfjiJ1x1MDAwN/jWZ0DZmdREovzetfXkjeY1XHUwMDFmXHKILVx1MDAxMqZlONrbeS6F4bt++tLkVIzijVx1MDAwMtf8XHUwMDE2J5VcdTAwMTScO1xmXHLAWrdUV2Y5y8/LYdeA8Vx1MDAxOLJzR/e0ZSB/+u5Gl9+pT5Ww7uRcdTAwMWKEXHUwMDBmuHyA3FxmlsduXHUwMDBlXHUwMDE3TVFaZ1FrO1BcYi7RMaRQmoSFz5CBjGmAf4tP6c9cdTAwMWb6jrvq+W2G+Z86bF7+aSQhMbvWXHUwMDE2+MXk9t1cdTAwMWWPOYhcdTAwMTSszKLDl/Jt9ZsyP3B8XHUwMDE1XGZcdTAwMTZcdTAwMTKgnzwgt8092Dx1lYwy5Z5Kv36Sajtdxn0pWH5cdTAwMDd3YI3YXU1+mG+jqZ7x3FpJu5vcXHUwMDEwK8S+ZCNfvc+nJ37DqdtaqzzClKQ+jvs5a2f8d47Fv/WxJJKbXHTyOO0hXHUwMDE2/JPl+PirLS+GOF1MnMVhK1x1MDAwZlx1MDAwN0xcdTAwMWH39Ma9iCRGXHUwMDAzl1fyncSPUeOwSyFzMSDLiYfnf+L+zJ3t8updZ1x1MDAxNVx1MDAxNphBW1tZXzDH9V2YXHUwMDE2n0xcdTAwMWO758BcdTAwMGX2TcZcZlxuXHUwMDFjKHnqmFx1MDAxZqxFKHxZXHUwMDA0XFzc1EI2bmi+2mcqkSefyub+v3h2TMU6qrtWXFxso+U+XHUwMDE4vDpUJevFaUFcdTAwMTYtXGZVXHUwMDE5XHUwMDE3ajiPeID3mEy5qCGqXHUwMDFkajH6YuFT6lfLe2N0vrVcdTAwMGYxwSSlsr1cdTAwMDNcdTAwMGWOI/w3Zz2Nnf2EiYV5L75KNVx1MDAwMMMr7ZKrXHUwMDFjR6HgXHUwMDFkZ1x1MDAxMJfrXHUwMDEwNvLIgpWMXHUwMDA2Y7hhsEbYXHUwMDExzSEmX1x1MDAxNFx1MDAxYVx1MDAxZXnhIIe1OJ9a47NcdTAwMTlcdTAwMTO8f9WcJ716XvudIWhdI0z7XHUwMDFijU7SpF5U9js/pN/tY1x1MDAwZug1lTubWSNv4p1cdTAwMDP8Rlx1MDAxOLBRXHUwMDE3XHUwMDFml33kx5NBmnL8yIz7dIOeX/+l9W7UXHUwMDFinPf8v7ZcdTAwMWObxV5KgS2pj8mnQUuCcFx1MDAxZof2RUbQ3azs1V135+iHK9pWVpTai1x1MDAwMFx1MDAxYnHPsf+p2V/9LILm8iPrNT2hL6A+sS72eZvZ+/K/7Mc/0Fx1MDAxOFx0alLt21xyJYfoNrZB5KYqXHUwMDFhfOXuXHUwMDE4PmzBpcDCXHUwMDFi0lpfvz7OfzXNqp0ne/SPqE1cdTAwMWJcdTAwMWJKXHUwMDEyXHKKlyBxXHUwMDE1ikyYOsNtllxcXHUwMDExYrYzbZzQ7/7tZ89cXNtEK+n7qoe7/bZcdTAwMDLFXHUwMDEySZz5ePH7XkWLbEb7Mf5cdTAwMTXfsFx1MDAxMetWYVYnWiE4XHUwMDEwYoxeXHUwMDAzMFx1MDAxYmUoI5HIiHPa06eiJCTDSlx1MDAxZDo39kjRZJJZwr5U/FXly2iBgcdkvfZcdTAwMTf/7v6lI4zGOsnO8LJE8t9cdTAwMGagfridyE870XpQyWFp+dbhXGZcdTAwMWNccjuO7YF18Fxy+Vx1MDAxZtluJO6II6RqXHUwMDE5XHUwMDEzz+hcdTAwMTIp1Xaz489cdTAwMWZcdTAwMWHccOflMalanZGy9chcdTAwMTGg1atagFxumiP4JIjlyp0yL0GQnmnlrJ7FXHUwMDE4msCZw/ud31x1MDAxNvOkXHRcZlx1MDAwNsBcdTAwMTClSKSc/+qjSjVcdTAwMWI8I36NJ9WwZ4WB5jVA/InM1ZhcdTAwMTRUycnEm1wivyjKOFx1MDAxMNRy4bjvhVx1MDAxNvMuNLFLi1x1MDAxYUaDgagvo+BcXJNy7FZ/6HmgiKzmcZmQ59lZwE+Xx3BcdTAwMDHg3l5OkfZcIpVcdTAwMDdcdTAwMDO9NXLBs/NFJN3ybWNyuCQzvEhcdTAwMWRrOFLl2P/25UnYKuUxiFp4ymVqlduHP6FkXHUwMDE5wphcdTAwMGJaxGV7hsKbamV5zevwL3mHrDRm8Fx1MDAxYlx1MDAwZVx1MDAwZrjrQDRunX/p7Pxcblx1MDAxNNtcdTAwMTPfRlx1MDAxZr18TlxiXHUwMDAx5zv7kFhgvV1/XHUwMDBisLvRg1x1MDAwN1x1MDAxM4mQ0I8z4+fI2ezmsFxi0aOfS3gvnP2oW1x1MDAwZYDqLcTG61968K6cXHUwMDEx4mZcdTAwMGVnm7WsuImWqc+pkZfUXHUwMDA02yzMkrHsXZxuhWdmXHUwMDExdqvagCmRXHUwMDAxQFFaKjRcdTAwMTbBd5a+fjndnmR08FX+XHUwMDA3R+kx01ero6VDX1TckaA74pFPXHUwMDAx/p6HSGF06lx1MDAwN2Ly1alcdTAwMWZcdLuEx2qAWlCBn79T5sw7JOpNm99oQFx1MDAxMrs5jO7/xYJjc6b/bFx1MDAxNTPhpX7Ue4NCa5hcdTAwMWbIyVx1MDAxM5I42VLe/LM/XHUwMDFminEwUKZQVJsno3aiw1x1MDAwNZmDc4Y4f6y3rIjew9K/88GW6Vx1MDAxYTJcdTAwMGXhXHUwMDA3XFxkensyNVx1MDAwN2SbXHUwMDFitFx1MDAwM5UnXf6lXHUwMDE4XHUwMDFiXFxcdTAwMDOkJcnuVSrX05/fwlx1MDAwMORJTc3d96iLnGS5Qe2D7v2/PeK3bsSpTbrAaVd3Vk1tbcR5R1xmM+JHoYf3Z1k2Q0XL2Y1tttc+J2u8gYpcdTAwMWFGvbLpXGKSOiqSri1cdTAwMWRyJutf//ZcdTAwMDHu2EP8zE3sW1+eXHUwMDA1sDBBNVd0K1x1MDAxZOtcdTAwMTDnu3dcdTAwMDL/3ftxMWeMLvN5yVx1MDAxOJj/5lx1MDAwZoZnllx1MDAwN1x1MDAwZV+rx3/GITCv2ae+7lx1MDAxOWuUsv7B1J/f2MzLRIHO2Vx1MDAwMJ8xcF856pJcconh1CHrsZA/b5bPgNg6jZo6MdJwXHUwMDFkNkKMwZDqLuxgpIGhLtJcdTAwMTCtVFwi+Fx1MDAxMYW5g7qYXHUwMDFkQdF6gVwiwMibyG81zrDhXGJiiXjdaZo+XHUwMDFhcD0+oEWzomr/9FEwqyq+I3w/6+r70mt6Spf2XHUwMDE4cffUUDfUXHUwMDFif/+863bsXHUwMDE3XHUwMDEyokOYJFuwJDdnipl2cTxCoFx1MDAwM+Yj8815ZuF/gbegr+VcdTAwMWGs+5vQf5/nzTk1zGVkXHUwMDFiqt1leIU8bZ+8XHUwMDA3k7RL/UttbVx1MDAxOa9cdTAwMTBLRP/pXHUwMDFi/+jlJFxudchcdTAwMTRa0lxcIebxQMaWOlx1MDAxZHdcdTAwMDZcdTAwMTBcXMiC1j5cZlx1MDAxYVx1MDAxYXVuWKyCzcr0gFwizXtcblYjPlx1MDAwMXpob7CJ3i6EhKE1WKhcXGNxwdAhzZbKm1x04zDS1z1DaU7RM/nUfl9UifL8wJ3Zd1x1MDAwMbj31nw2/nUtqlx1MDAxYjZPeLJW4KjGnCq6Ktbvgs9HVV2hvZNyiF2JWaTGk1HKudPFXHUwMDE1UC8ylVv/ljtdfvQrNu6W7lx1MDAxMVxmXGLt4e673jiMep2sMa2BMeUoa1x1MDAxYou5MZpHb0Vf9lx1MDAwYr/+Slx1MDAwNC9I/dJ1+e+ZOnm/Uqj+Rv/2I/zDXUk1O/97n62RP+ai0tlRYlx1MDAxMFxy8OnqXHUwMDAywVTqe7bASJx9XHUwMDBiWcG4//bmyYmUUZ+0iPndryQjTrjBVM6q0NFQXHUwMDBiKOnLdDhLYlxco12WzqvKUjLM1HWe7KFcdTAwMWbTd91VUVx1MDAxM8q/1+upRfbtRUxcdTAwMTShqanthJqQsEdcdTAwMTmBhqPQt+TGYWlcdTAwMDX2bYowXGJcdTAwMWKVjHWDK0HQy4rx4chcdTAwMTnbMi+R+S/3/Vx1MDAwZvMyOev986z+XHUwMDA2XHSg+ID2vOtuU7xcdTAwMDAlXCK+ZmtJXranqaCfdHtcYvzlXHL+PuS1LJlcdTAwMTf/91ijw81lJU7W+4EwKaNcYlx1MDAxNpRVXGYmMKZ748lK0KV8XtVdevU1P7pcdTAwMWNQNEul5lx1MDAxN3X2x5H44n/n+D/aXHUwMDE4MM47xPhPtnRbTXnqTdzK41x1MDAwZuM64fBcdTAwMDJcdTAwMWTidVxcusyfpd8z/zuSceDbYsY4MZU7dFSyLKKo3FxuhS1U4YVMXHUwMDE184fmOFx1MDAxY38981Z7mz33XHUwMDE3XHJcdTAwMWJasffN8tmUqbTIfbnriFx1MDAxMPObKlx1MDAxY1x1MDAxMoqZvVx1MDAxZS7zPTq5V9o0uq15Xf7/mXvzppnXoPclXHUwMDFiZLHc42RPKc1EXHUwMDBlSypQ7nbUv3P94Vx1MDAwZnZTXGa7Qmgy6PU406bhozcwNFx1MDAwNLk61b97Wc1UXHUwMDExJlxuXHUwMDFkwHTifVx1MDAxNydP5u335ttxxEVqKXc045dFgFx1MDAxNnfEV+pFaL16PHXIMIylQJ3g+Fx1MDAwZcJe9pgnT56RrWm8mvTfef37XHUwMDFk91xcP0fFxFn2kEX/NIzsXHUwMDExUuZNXHUwMDE2Kon2hnft1ZhcdTAwMGZcdTAwMWKWx7pcbjNcdTAwMDJcdTAwMWU+0LzkXCJcdTAwMTjTV1x1MDAwMsH4e/vXXs4/41xuXHUwMDAyVEGOrzz1nVxihWVcdTAwMWVQkGJ7TLI0+897mOa0tS+ly7NcdTAwMTU5mPdXXHUwMDEzevsu0+CiXHUwMDFkjLytt07YiSDFnz/qXHUwMDA3s6gnrjjTLEPGvHVL96PQtYLoV2917l1K5Vx1MDAxY5Jsvce7XHUwMDAynbFcdMLIMlbit/dNhmsjpP+O5288RVOZ9enjXHUwMDExhvlX4L1w8qGeaTFxbva/rZZG0Fu1XHUwMDAz3Vx1MDAxOOZcdTAwMTlToNnwXHUwMDFmXHUwMDE4y1x1MDAxZOKA5yN8tFhcdTAwMDYh7I85O4o0Mutnd8yb0lx1MDAxY1xyXHUwMDA2Qlx1MDAxZGOQsES+3jzuIdDH6jI8enXnXHUwMDExprVccoJccn2IYIu9s3+uhSjXiWJcbv8w0Vxyqde+ht2+PN7kSstcdTAwMDWoTbxcdEOQXHSZdEFU+niQ6OjDplx1MDAwM8lmRrFWWP+6podcdTAwMDO4p/tcdTAwMDOGPop5UJZg/i4prHu6XHUwMDEzg/FhkG1uJi0xdeOH7mK8h/1cdTAwMTmj6IFSKFx1MDAwNVx1MDAxOFFEUW+UKJSO53/es0DJ7STThv5OO1x1MDAxNNfLS1x1MDAxMreJwFx1MDAxOars5keOXGL001x1MDAxYzrbyH/kXHUwMDE5x+fM77l1XHUwMDFk61x1MDAwNGlcdTAwMDc9xmVcdTAwMDA/LK17mN5wXHUwMDA14YP6klx1MDAxZjBzYTEzXHUwMDFlV27341x1MDAxM1x1MDAxY/NcdTAwMGbu4Dq+SlwiUVx1MDAxML/MY49NX1xmb1x1MDAwNlx1MDAxZTRcdTAwMTWb9zYvaH7bdfTRQqUn6WBcZsDNT09cdTAwMTP7tp/hqWWAfG+Acul/a4vPOtXvnVx1MDAxZv/LXHKIOO5Mit3EcFx1MDAxY1x1MDAxYlx1MDAxYoA+Ksqt3eNaR7ozWqVX9fFcdTAwMDbiXHUwMDBljjdcdTAwMTg1K4D9O1a/Md+Pb/TWJjaum42/51x1MDAwZV+gdixFeZVcdTAwMTXN+fDXfXXM+i5Zs55cdTAwMDRcdTAwMWK+XHUwMDExMDq2K8g/f6zZXHUwMDEzq4XNXHUwMDE1mjMj9bkuKeZvnSODZtGPx/8weoS9tPD9z/vTVClcZkzWSdzyxu/qXHUwMDAz8jmZXHUwMDFjbFx1MDAxZv1cdTAwMTl3XHUwMDE2qTwn/J39VsZcdTAwMTm/51rffFhUXHUwMDAyQ7pAvpbw9lx1MDAxMcXPMEiVq1xyXHUwMDE2m826l6906Fu+2Fx1MDAwMVx1MDAxObfM+Ze+fVx1MDAxY+8tR6wxXHUwMDAzZ1x1MDAwYlx1MDAxOMJcdTAwMDZcdTAwMDVcdTAwMGZDXHUwMDFm+zckqdlqe/fRmt6NTGnUKFx1MDAxY+2L21x1MDAxNaL+/PdcdTAwMWE+c53Fp/Z253/49EPFQz+Bc/n47zyVZ3uhOOv3nFx1MDAwMVegTj7KoWxcdTAwMDZPXHUwMDFknU+9or67zX/G/PF50D/zs2TvPZO4hnH5XGLB90pcIrxi2Z+Z9me0UKIw8va72YFAvfvQh+F02V20Q1x1MDAxMTAuIDQ+Tc37W8OEin+GXU5hbVpe7jqI/6rFXFzucKu/XHUwMDBlXHSVeMHMXHUwMDFmxeKb9DxTJyF2IFx1MDAwNVx1MDAxMC+Pd9y4/9jfrlx1MDAxY/tcdTAwMTmu+5860lx1MDAxNTGym5c90K9165rJt4mg4zzompo1anomilecjWZ3XHUwMDFlwsP5v3vlP/9ZiJ+aYnz9f94psPuOfHsuxu7tcWRcdTAwMDBcdTAwMDJYkISCv2tcdTAwMGIxXHUwMDBl3bZcdTAwMWRAwpyFXHUwMDFlsLX8N1x1MDAwNOKbv+X7Jf9RXHUwMDA3PDsy41ObVmpccu7WXHUwMDE2TUIyK1x1MDAwM33B5qlcdTAwMGVgXHUwMDAyZPL3kdjy9y7CXHUwMDBi4i9cdTAwMDXcVMIwO1x1MDAxNKXZz0qzj19nhD/YhFx1MDAxMbGHucvnb6PplWWXxfiUx2Q3IK3DXHUwMDFl/PZ4orpeRsjwuNHPpnrIxox9eNWugFx1MDAwYkDqV1/+kcNcdTAwMTLLV77jKcKjfXHNgI1l4S9bTF07WFpyvE9cblx1MDAwMEQnw26YbP93n+LOeIS3gjX8cEVzXHUwMDFisuL8n34yP39cdTAwMGXNMo+d5stcdTAwMGJM365PXHUwMDFj7ek6/ZW+4dW90LaWjCRcIjxjhr9cdTAwMWZoaU11qKfCfLhSdaitcLXdXG6V7O/6nbRHyONi6nhcdTAwMDN1XHUwMDBlPpHUcoWv9tGCLtNbui6gq735NGZsyjzf29aCPlQyXHUwMDEyYFx1MDAxN1x1MDAxM0li02IrOP+3Tj11LD6cXHUwMDAyJEpdXGKl9UXzXHUwMDFjwiVcdTAwMDRcdTAwMGV21N7WaNtcdTAwMGK8YDRMmqTX0iqo6Fx1MDAxN1WqLTjo4FebNaf2Z/+b//lcdTAwMGWTXHUwMDFkXHUwMDFlyK12vHNjlUW9qVRb/WIlnm5tW2Gqfr7pVLQvdCdbb/vcna+wgFx1MDAxZEXFwec2goNTQbyTXG5KXHUwMDBl3GCwv3I0TFx1MDAwNK82mZdqTft/NKGAjcXKN1GzZ0y98GHI/Y5cdTAwMDP3Jz1cdTAwMTFcdTAwMDTkXHUwMDEzP9ktgXpcdTAwMTIpZMmhz1Om9H7PdYGzhvSp4PzV14TiWbyZMYYu21arXHUwMDAxjN/5MTJbI1x1MDAxMrSIXGZcdTAwMWXNRoX8nm1cdTAwMDMtc1x1MDAwNZ2vckbr/XChZmhoJVbTiclkXHUwMDEw3iydQVx1MDAxMthfayr7h3Nrwd+9WKr/sdJvvqnHfVx1MDAwM7JSu6Yw7WPyMJ3vglx1MDAxZFx1MDAwZY+yXG4/sLY2WvVcYkytn/t67ipcdTAwMTbN5J1ZlSefXCJcdTAwMDLRXHUwMDBmZcNik+3vRyHm2/zl/33/5Lcm4bh9dIybxJqq3Hfyxu1vnZIhhyj3ULFgnsSPXHUwMDE2s1x1MDAxMJFrvvkwZ/o3c/aXpsie+DXeh8J3d1VVO66riFqzTEuQXHUwMDA02Fx1MDAwNTlcdTAwMWSoy995Slx1MDAwYljV/e4xcXzdSGugkaxMfivJwlUmvVx1MDAwNlx1MDAxOCy5THiha1x1MDAxZqrIn71OVVx1MDAxZlxyWphIbfShYFx1MDAxYdtOTVx1MDAxNe6ghbKrNknaxURcdTAwMTc/0kN8XHUwMDE5Xs5fLJti6qRHXGaXXHUwMDA1/9k/sMlpKt7Vy/9cdTAwMTZrcFxmcfDO1U//h8ZcdTAwMWJcZsNcdTAwMTFvglx1MDAxMXsss2RcdTAwMDc7KVA4MI06XHUwMDE0Npyt0SN3nJRXmUFqic9cXODvvtxws0NUymeQr1x0Xc5mMG6QyatZWyOGXHUwMDFlqFG4XTTUp1x1MDAxNSkh3uJzq/n3XHUwMDFlVcdUtaNNOsRyXHUwMDE0oVxc6VWKOVhcdTAwMDFf2Vx1MDAwMCpcdTAwMGbyZTG9XHUwMDBldnNcdTAwMDG9+3z/4mrmO55cdTAwMDLzO6dGelx1MDAxYiA1MzVx0tQp+y79plx1MDAwZkRnj9f9RbrXXHUwMDFmazm/vN9u/cdkwf995kXzXHUwMDExXHUwMDFknb1ccpBcdTAwMWV3dpPujnHGi/krrjmm8KLDPrr9cDxcdTAwMDJz9Vx1MDAxZEs4XHS9XrKI/+6D3U1B41x1MDAxMrBcdTAwMDW29Fx1MDAwN+Nx4/PvRrba+mdwIDNdl7KdsDBYL8hcdTAwMTRcdTAwMDNcdTAwMDfnqi6UciiCvcfMXHUwMDEzj//SJZGpjPDR+b6huHXd8oz4cNibYj1AeWOq+kLBVakkVnPVxp3+zVx1MDAwML89mYxlxIZzNUDwWrcrRa74ZH2YuPBYW6p9lLpjX1P0JztcdTAwMWOQK1lcdTAwMGVcdTAwMTdcdTAwMGJcdTAwMWHcXHUwMDFia6lcdTAwMTBKyOCt/zvyXyFo7yzXZVx1MDAxOFxueHs93MH8xVx1MDAxZC3kSXbFqbqTZDlcdTAwMTRq+4tkRNJzyFxyqMmJ7/G+1XrLz1x1MDAxNsrFyurPf1u/Rlx1MDAxZmF/91x1MDAwMeprVESOjFxmeP7Ska3RXHUwMDFm3rWt+6ooTekpplx1MDAwN1KT3C/8/stcdTAwMTdcdTAwMDVv5flcdFx1MDAxZFBz6Vx1MDAxNX9rx8hcdTAwMTNcdTAwMWbjvspOclx1MDAxYl+6XHUwMDAz9T6dXFx+NCtcdTAwMDDnlIX+vZf9u1x1MDAwZZPLT9VZnnLqa2dccvlcdTAwMTZcdTAwMDW+nDU4tu85ejq2zaNozebh0aVcdTAwMWSvXHUwMDA0+NKakVx1MDAwN471+ttLvjDNNT5cdTAwMWMu9WBYlFx1MDAwNpJil2k7h6eeSqSuxX5EM8xcdTAwMTlOqXlsaLFcdTAwMGbCWTS3jv+HdVx0tWQ6XHUwMDBlZ4ZPauOhnsa7lGFMXHUwMDA1sFx1MDAxMvfIXHUwMDFkKqFU6Vx1MDAxYn6IU4vrXHUwMDFiX7qgNu6tgnvJ39afXHUwMDFhq7FMer6iir9Dw7dcdTAwMTXRxzaovSRFokRDN9BbgsUgsbhcdTAwMDGqKp/6bjBCYFxc0EBwtJt/+85cdTAwMGansE8+pYH2xTMg301cboqt6mvJzVerTtkgyoDgdlx1MDAwNlZSgCM0IEvtZHiuXHUwMDFkb3zCPsP/s97Kp2L0XHUwMDBmXHUwMDFmh+fV3Mk3ZTRArMyzP+ezXG40i+FcdTAwMTIjO0tZzlx1MDAwNISdXHUwMDE4vZOF93VVO99Ti9p1blwix7fxV99cdTAwMWSNWmDIXHUwMDEwx+RoVlx1MDAxMLVcdTAwMTV/Tipeby1cdTAwMWXyXGa/p9hcdTAwMTKks1a6tfloSHJKRvyC89lcdTAwMDDNz4eBg7jVYpZaOqpcdTAwMWJTy2X+1Mjn2qHGZZjm96a0n/3Ns1x1MDAxZvlcdTAwMTdcdTAwMWJmXG4hrnfPv3LCddSVYVVcYlx1MDAxOS//b96fX1nF+Mq3Llx1MDAxY8K3mL+8hck0XHUwMDE3XHUwMDAzLa/kVj3ur1x1MDAxY5lEhGE/h1wixvb4f2N7/mL73sTB6v7Oh2/lR5X2opj4XHUwMDAz/H9z/P/m+P9cdTAwMWK6XHUwMDFm9T0svSsqw80j0pK9TIE6XHUwMDFjQXu0Q01di7K9gE1cdTAwMWZbWyVcdTAwMWQuXHUwMDA1MFBKLkpNLElNUbJSMDSzMDC1NDCxNDc0slx1MDAwMEvXcoFwLVx1MDAwMFx1MDAxOT5cdTAwMWZ6In0=Source Remaining Pipeline Tenzir Node S3 Bucket File Fluent Bit
Our desired user experience for interacting with historical looks like this:
Ingest : to persist data at a node, create a pipeline that ends with the
import
sink.Query : to run a historical query, create a pipeline that begins with the
export
operator.For example, to ingest JSON from a Kafka, you write from kafka --topic foo |
import
. To query the stored data, you write export | where file == 42
. The
latter example suggests that the pipeline first exports everything, and only
then starts filtering with where
, performing a full scan over the stored
data. But this is not what's happening. Our pipelines support predicate
pushdown for every operator. This means that export
receives the filter
expression before it starts executing, enabling index lookups or other
optimizations to efficiently execute queries with high selectivity where scans
would be sub-optimal.
The central insight here is to ensure that predicate pushdown (as well as other
forms of signalling) exist throughout the entire pipeline engine, and that the
engine can communicate this context to the storage engine.
Our own storage engine is not a full-fledged database, but rather a thin
indexing layer over a set of Parquet/Feather files. The sparse indexes (sketch
data structures, such as min-max synopses, Bloom filters, etc.) avoid full scans
for every query. The storage engine also has a catalog that tracks evolving
schemas, performs expression binding, and provides a transactional interface to
add and replace partitions during compaction.
The diagram below shows the main components of the database engine:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1daVdcIk3S/d6/wuN8XHUwMDFka3Jfnm8oKlxiKiqo8M5cdTAwMWNcdTAwMGZLscgqXHUwMDE065znv7+RuFBcdTAwMTRcdTAwMTRcdTAwMTQ2aDFt9zl2W1x1MDAxNJBVdW/ciMjIyP/+Ojg4dMZcdTAwMWT78K+DQ3tUzDdqpW5+ePhPc3xgd3u1dlx1MDAwYl5cItPfe+1+tzg9s+o4nd5f//pXvtOxZu+yiu3m6zvtht20W05cdTAwMGbO/T/4/eDgv9Of8EqtZN5PKlxy1i+fllx1MDAwN1x1MDAwM8Ve8pfFk3h8PJ6+dXrS+4C6dtHJtypccnv20lxijlx1MDAwYoU+flx1MDAxZsPvXHUwMDE4k9mBYa3kVOEgRchC7j/i45SqXatUXHUwMDFkz1x1MDAwN71+z19cdTAwMDezIz2n267bJ+1Gu2tcdTAwMDbzXHUwMDBmUtY2Y7OhXHUwMDE08sV6pdvut0pcdTAwMWbnON18q9fJd+HaZ+eVa43GnTNuvN65fLHa77ou6PVbXHUwMDFl3kaNPcc/3lfK96p2afY2+N5KtWX3enNvanfyxZozvSdodiFmkJ14afo0/jNcdTAwMWJWN9+04+ZxtPqNhvuDW6W3XHUwMDBmfn9qs0dC3478PVx1MDAxYqdtl6bfR5FWmDP28cpcZj5YXCLv0at2a1xuJcGpZoy4XHUwMDFlRK1cdTAwMTdcdTAwMDX4ONNPLedcdTAwMWI9e3bDzdBOvdByw2tcdTAwMGU9jj2aPVx1MDAwNVx1MDAxN/iOa/XnXHUwMDAxqT9OeKf+eHPR7Vx1MDAxZVxyycvhx3l/v/1vdqf6nVL+dTxYaCFcdTAwMTlcdTAwMTFcZnHCP15v1Fp1721stIv12SX8ct0zXHUwMDBmXHUwMDE1lo9mgVxuc1x1MDAxNzNlgVx1MDAxNNJcdTAwMTKSIFwiuZJKu/A9ff5SLHJcdTAwMDJcdTAwMTNmXHTO4YYrwlxiVpIvcoLyfaFEr1xyZueLXHUwMDE5MffCXHUwMDFi9CVcdTAwMDE4YHhcdTAwMTTLkC9cdTAwMTaOviNcdTAwMWZjyiinSLBPQH9uXHUwMDFjXHUwMDBi+Fx1MDAwNFx1MDAxNmpFN8DnXGZuXHUwMDA2ZnBva62Dpt1sd11GudxuOXe1iVx1MDAxOTpRc0fP8s1aYzx3283nRFx1MDAxYbWKuVx1MDAwN4dFXHUwMDE4tN09dN9cYqdcdTAwMDai8XFCoe04b9LxXHUwMDA2o55ccoOeftVcZo5F+Ko8XHUwMDFj7caDaEi7W6vUWvlG2v+KzFfE3nGPLcJX0FTV8pFcdTAwMWM+aqdyufMzXHUwMDE0795GzqrHgVx1MDAxNVx1MDAwYiNJLcY4Zlx1MDAxY1xii8GCeFx1MDAwNFxma0tcdTAwMTGNOFwiXGYgg2ZcdTAwMTf9Tl0mkIVcdTAwMTVcdTAwMTaUYayInD2AT4pcdTAwMTnWXHUwMDEyXHUwMDE3yY+YuZ64i9GMIYHQckajXHUwMDA1hfvQMkXgtmpcdTAwMTc7dq5l/XHp+EZcdTAwMTVj0dhDvnx6UU9m2oXCt2nZ8tFcdTAwMDTQMky4sEDENFBcdTAwMDCcXGLN5ukh+Tp6aKCXxppRyjX9bVn7VnKERdYwXHUwMDE3XHUwMDFja/Ct1VJcdTAwMTZQP1x1MDAxNmCG4CFKoT5Dg13rWrt1UKr16uFVtTU641W1hetcdKZpK+TK7bto32dcZoxcdTAwMTSEXGIsXHUwMDAyPONX24BcdTAwMWRRe84+5GMpnKne45OrvnjB4aHOolEwdolcIk+k6T6wYDVs83el1fiHre2iXZ6d44pWXHUwMDE3bVx1MDAxNtHa0u4/M7P4xlGKKCZcdTAwMDLIsWVcdTAwMTOwJXW6QvVod/x0VHkuxbuVStbJPSZcdTAwMDYudfrn8o99fXNbIFx1MDAxNSPVWymaPJkvJ2tcIt+8nP+W9+/Pd7vtYdDPvb+oZUnxNuVUnF63cfWcTZ5rXHUwMDE07HPXq+nUQv22mi5cdTAwMTdKt/VdsMkz6yvB/EKgXHUwMDE3JKBe9ZSWM9PDsG/jpeaWXHUwMDA2l1x1MDAxOIOjxoh2XHUwMDE5qun7XHUwMDE5JVx1MDAxNt9cdE/hzlvgzIN/XHUwMDAw0lxiTlwiWe1qvNGUMVx02FAuRdxcdTAwMTFNt4nMz0ukuYMneSffaFdcdTAwMGXnXlxirp3NWqnkViWPSq5cdTAwMTFcdTAwMTOvSi5cZmZBJZeL9Oe1kyzGXHUwMDBlXHUwMDFmXGZcdTAwMDXviFF4XHUwMDE4QeL+V4Y2JO1U61x1MDAxM5Yv51x1MDAxOCO4dUNKzmXotZMyi2tcdTAwMGVcdTAwMDEvZ2COpDc/xYlcdTAwMDUuPdZIYCSo9oxrO3Qly2TVPfQ3gsLjkpiD2Vxip46e1FuVZvd+3EOxgnDqt6XyKNbcLMpcdTAwMTNYXHUwMDEy7cb/LnSJYH/UXHUwMDEzxFx1MDAxOFx1MDAwN3+FXHUwMDA0Rv3yq1x1MDAwZbcuSWVcdKlcdTAwMDFJSDCqkMuwvIJeMUvuXHUwMDFh9Fx1MDAxOGNLUVxmo9BcXFx1MDAwMPlcXOq4QqNcYpJcdTAwMTjBXHUwMDAwd+9Lhkek7opVu5nv7Uik1lhtr0gtXGZmXHUwMDFiXCI1PWuZXHUwMDA3qf1jO0okR5yKIPH7K1PH5bIoXHUwMDBmjtXx2ahK2F3jJnp5i0KvT3x/9Fx0K6Eppe45hn1cImfPyXed41qrVGtVvG+xWyWfV1x1MDAxYfmec9JuNmtcdTAwMGVcZiPVrrVcdTAwMWPvXHUwMDE508+NmCCtaudcdTAwMTcuXHUwMDFhPtn3tY75uHlFnv3vYIaU6S9cdTAwMWb//88/1599RNae73rqn3uHWvtcdTAwMDasfN/wy/3vpnaDIOw9OlN4XGI9ISbjwXNCZ5Obi37ytD0uTFx1MDAxMk9cdTAwMGb9y9Q5So5CbzfkartBQ2Q3tERSmXjjx2z8mI1vNFx1MDAxYv6z4GAwKEGB5lxuXm1G83iceJk0I+XswyR/kpE4q9Khj4XhXCItxiTBXHUwMDEwXHUwMDE1aPAsZrfjNavMXHUwMDExeOxcbqhCJVGC/lbuaunM1Cx/tcRwLLpcdTAwMWJAXa1cdHWVkOzGblx1MDAwNJju+bFcdTAwMWOLZ2Pkd34glq7OXFwtzvd9KDzHwtRcdTAwMWVsMOtzXCKKpYS8uurhQS/HM9nOxImUws5WXGaB8Fx1MDAxY13n2cqBzF/DVmomgOCbMITyjII7IVx1MDAxN8lLiG+d4zubiZZEM7lzNn8yuzU81clIrjLQ/dKYXSfFZDg4ToVw1oVQX9+XmlwiXG7JZXBiLL/osFx1MDAxM1x1MDAwM/xdi3NcdTAwMDXCIFxiU5orLzPUV+lcdTAwMTjBlsRcXFx1MDAxM2nGRKir7HRFjlx1MDAwYiNDJqZ2ToTwpLhSIFg1x1x1MDAwMHjupeBJLqfd8c1wrbHu3lxm15KxbCPH9TpLu4yw0r9IRSiGqVx1MDAxMoGKL4PMR4eUsa7C+FdP04X9rVx1MDAwNqQqiF/JsCSSkN1Ps3xvOOqqNHxbXGJcdTAwMTFk1nLK5WLfjFx1MDAxZllMzP2ZXHUwMDAx2dyzfMdcXM7bgVnx4pbdVzDANY+XuFUnlqjfcmL9VJq6XHUwMDFlrof0xORjwJVCwUlf6MbO0UOiWD3tdOzqWaNYyZ2KsJNeSsuU4CGJXHUwMDE0XHUwMDExmnhXXHUwMDA2ULJcdTAwMWJcdTAwMWKAqbCU1kpi+FpcZj+XXHUwMDE0KfPFWJNcbm782z3NUblFXHUwMDE5zVx1MDAxZF0hysUpS//datnDg867KH56XHUwMDFhaoVCz12BV47XjVwikDYz+jltpkx6j77TXHUwMDE03EqitFx1MDAxYqXrWLq6pCukLPVKM99cdTAwMTEtg0kzXHUwMDA0iUQpd3H7PrHQI81+XHUwMDAyXFxJ16+KpaG+yrxcXHZTznG9rppXy1x1MDAwNFx1MDAxOFvwNKTmXHUwMDE0gVhcdTAwMTDGsHKd9Ka/1EJYK1x1MDAwNVx1MDAwZY0wqX62KMjbdVxujn68gtm/m3pcdTAwMDXcVdbgMTdScdAshYKbm9UwXG6ruSEgztKsbOFKYMY8SS3GhaVcdTAwMTXCxkOnelfTVoxYmGq441x1MDAxMuCLMF+yJneZh8Axku6K1i9NX4Wxavj33I+K7Vx1MDAxY1x1MDAxNPNgmMwwXFzS/+9WpTawW1x1MDAwN/nWgT3qdOGW7SZvsNIr+eTgtuGsrMyLg1xi+FlcdTAwMTCOXGJcIoDq4GGFnblLkFx04p3u0DlSmXNcdTAwMTLJnHXDbkEkXHUwMDA2XHUwMDEzYlZcdTAwMDVxzqSgePYpr1x1MDAxNkQrSyCOKFx1MDAxOFPOKdld8s9tXG4+7IZ3rcSSNDhcdTAwMTg/hVx1MDAxNNp5XHUwMDE19nI7si5ccj5cdTAwMWW0q9TJNVx1MDAxMi86I6O5au3lMSGCLmo4OdOX52M+qFx1MDAxNIaEn1+g7FiNXHUwMDEy+7WogcpcdTAwMTWLXHUwMDFhlMZcZlx1MDAxM7RBSdrSu1x1MDAxOXaGSVxyXCLNhUJEXGIlvMsgzcTT1lx1MDAxOLZiiVx1MDAwM7dcdTAwMTTVmiMuIChcdJpaV1x1MDAxMPVj/Fx1MDAwNSq9qsqZXGKMN6lyXqqjgXPr8VbJXHUwMDFl2buI29dcdIRXNFx1MDAxN0ay81x1MDAwNVx1MDAwZVx1MDAxNPvn1qWQXGK8vFxy0mx18TCsn0Wat4VaY1TrXFzEm42jfujZSuQqPeRsi3roy9ZlwT1bdKGVklx1MDAxOCkpQ7pQ0HlMT9j1XalcdTAwMTbPnqYyjc6ExflFXHUwMDE4NYr4ol7Jac20XGa+vmH5RYdcdTAwMWT0lFuAZ3OhXHUwMDEwN2PX/XhcdTAwMDU9hJH4S5xAwSzEtabCSNTSJf9kUaTAU1x1MDAxN4qS/V+HXHUwMDE3ONa7q9tOsbqjXHUwMDE1XHUwMDBla8z2wlxuXHUwMDA3z1hcdTAwMDKJXHUwMDE0Vr8hUq775Fx1MDAxNSlcdTAwMDNgNLfcZVx1MDAxZF/zw1x1MDAxNsvFr+rdzG315mnMmtlssVx1MDAxMHa+XHUwMDAyXHUwMDBi90ekNKdauPPgoVx1MDAxMqlIKkmvzjpcdTAwMTdXXHUwMDBm/Vx1MDAxM9ksXuXrt3b8T1xu0LB/gKaoolxii1xyXHUwMDAytOV3M+xsXHUwMDEydH/VjyMh4Xyyn1M84VO/NXrwXHUwMDE16udLVeS7vI8pXHUwMDBlOHdcdTAwMTeDrk2lZLvp+EsmKzo3g6NcdTAwMDGKVsulciX0TCVcYqhcYvyQXFxgqbG3hpeJL9A9YuZcYoGmmGC0ti3VTFx1MDAwNVx0WFP3Mqp9pWngRIplWV89zTD3lbvPlvjHjdys0eJcdTAwMThcdTAwMDePXHUwMDFidSRXfVx1MDAxYaNq7uT8+CWNT6I39cdY2PmIMWJcdTAwMTadllx1MDAwZVx1MDAxMyRcdTAwMDQjntwmlkBILlx1MDAxOeCeaSZCX1PP4K9EaPdi+jlf9fbpXCKRXHUwMDE1pa7T75Vvb54jjeJxjIbRp/RfbUKZ0HP9hNfxYvk1h51cdTAwMTeEUVx1MDAwYq6UI0Y1lsrbXHUwMDE4VOGvocXnXG7qXHRwg37FQrFcdTAwMTCJ1U4r6tfY9i+qqF/dXHUwMDE2UGLf0j2CMfiXiG9Qu4fFZabXT/JSpCtTsVrysXFbjoaetVhcdTAwMTGLSFx1MDAwNjQxOUUsPFx1MDAwYmGAXHUwMDExXHUwMDE2XHUwMDFjllx1MDAxNIBcdFx1MDAwNFx1MDAxN56Bbcu75PAlXGacXFxcdTAwMDJKJtTMg5glWeBcZlxyY4VcdTAwMWZCM1x1MDAxOLCXwJoreNVvXuBDL1x1MDAwZa+jaJhL0+Hg/PSumbuwn1x1MDAxM+2KfteTb1e7Tj8lq6VOu9TI3lx1MDAwZdK1+lx1MDAxOSvcbDh9ICFG2P1cbjLk3z6BoNdcdTAwMDTKXHUwMDA27Vx1MDAxM5Zfduipo4klTclcdTAwMWRcdTAwMDXpXHUwMDAw+HlaJFx1MDAxMYjMOLBcdTAwMDZBXHUwMDEwXHUwMDA0oVx1MDAxMNlcdTAwMTF3sEmgmKJcdTAwMWSO+dIuflx1MDAxMLtpwVx1MDAxNIxcdTAwMDKEXHUwMDE59Fl6qaMoXHUwMDEwijBcdTAwMWZcdTAwMGZwXHUwMDE31FnsYE3ejvztz6iVoFx1MDAxN8SV0/ukcGJLXHRcIpHJe1x0qtyLK9ZcdTAwMGLpS992XHUwMDBl2t2DMzvvVN2iud1ugaslZomo+o7Lo65IXHUwMDBizFx1MDAwMSFvP6lcdTAwMGKLW5nAXHUwMDAwXHUwMDA18a1bxVximCTNZlx1MDAwZYFcclx1MDAwNjlzYsOLa5bLXHUwMDFkJzOM2MlHfVx1MDAxM/p+K6C11Fx1MDAxMqbRXG7RXHUwMDAy7Fx1MDAwNfZqLUgxk1pLMCbGi96NwcDawkQr039fm6pwuqR0VXNcdTAwMTinplx1MDAxMFx1MDAxN8JAXHUwMDE5d1WivKstXHUwMDEz4DDQsIjtl+nhOoz7+pNcZqJcdTAwMTFK2Vx1MDAwNpN06TKrNIvZ00HnvtOP1tKiMsmFvrJcdTAwMTJcdTAwMTNcdTAwMDSaKJEgYEFcdTAwMDE3aH8hXHUwMDBl6EbINI5fvsbzXHUwMDA35IsgN5Myim+yXHUwMDAwoa1cdTAwMWKx63yHXHUwMDFkPeSrlco1XHUwMDFknmTH2fCDXHUwMDFjXFxcdTAwMDWNXHUwMDEwU1ohXGLZ9Vx1MDAxZYOcwFx1MDAxM1x1MDAwM/3lPyD3gNw3za0lnndcdTAwMGXX9jxORmJcdTAwMTfp5C1+Ltw9srPBZeTqPvxZbsLAKYTAhlNCqEJ6fyGuXHUwMDE5MmlA8XXhzZ5A3Hd5OYbHTqjZ/iQwyI/u6rnY6WN3VGx2a+fRs7i+XHUwMDFl9cJcdTAwMGZys1x1MDAxN5UwaS/BKN5jf1x1MDAxY/wuuFx1MDAwZYihfuy4XHUwMDA35P59vFx1MDAxNZdgxjfp2HdVc0Qy05zcPrc60Vx1MDAwMm2WJ6lmMvwgl9r08UTgl1x0wojcX5CbfkyC6tDkeENcdTAwMDNy/1x1MDAxNVxmykxpSbnBNEZcIn1xf1x1MDAxOYlfRsrJo/5jo5B2RtlcdTAwMTDtXGbmXHUwMDA3cq0swJZmlKm5XFzTXHUwMDFiyKllslpagaZJpHZTJLNcdTAwMWSQXHUwMDBiyanC2GdcIvJcdTAwMGZcdTAwMDb5im44XHUwMDE4/Fx1MDAxNbPPYWCQXHUwMDEzdn1cXD+q4MJR/XhYjdmju1Qq/HEnwMYyXHJmkNBcYiPmnW/YXHUwMDFmkGuqpCZ+PTr+WIzrXHUwMDE1S9HgkTNcdTAwMTjLXHUwMDA2e1x1MDAxOVx1MDAxNFx1MDAxMjrab1XRsJDtpk/SXFw2mo8q/Fx1MDAxOKfSokhpjaWWXHUwMDBizVx1MDAxZIipXCJcdTAwMTHS1CdTzojrfoVcdTAwMGXjUjGuhf7BuFx1MDAwN+MuYfPWSVx1MDAxMTE3XHUwMDBiubbzaHlcdTAwMTTNXHUwMDFm9UuaRCZcdTAwMTckxVx1MDAxMkXSelxuP8C5tDBcIkhrYTLMasFcdTAwMWanXHUwMDE2XHUwMDAwh5qKXGZTXHUwMDEzIcOLcGKuQnGOf4LO+dpcYn9XRWKz7e8mnkr9tp3IyGuRuThcdTAwMWROsnf4sZ4pXHLDXHUwMDBmcmlqXHUwMDFmKPjjSitClmXIkSaaMGA8lzzEIFx1MDAwN0d8Krs+zTb+WJCTXHUwMDE1O3dqyk3N60bdKW/q6aerSVWMI+XG+cNLsn83XHUwMDBlP8q1sFx1MDAxMJWEU5NJwoJ6UY4gJlVcdTAwMTQ8XHUwMDAxXHUwMDAxMTpcdTAwMGIvyIlcdTAwMTk9N5us/Wkg991WXGb5uilcdTAwMTCGaZNloMHn8lP5fvU6Me6fnlRyXHUwMDExnFx1MDAwM25cXKZD32eNuVx1MDAxNraOXy3hb/V1XFxZtb10XHUwMDE3IG4hzLjiVIHTRFxcue2PtVx1MDAwYjBGhbjP7OVcdTAwMTdcdTAwMTZti1xy8Oi6h//Te3vMnb34MGdv/+X+93OrklxcXHUwMDFky1x1MDAxNlxub5RCXHUwMDFixc1HWXyu7m/G99FUhlfub8tnz2VcdTAwMTJ2skqMLFx1MDAwMZcpNedcYlxmpMfholxim1x1MDAwNXxcdTAwMThOkVx1MDAxMvwy4lx1MDAxOdh3tzSTSiOEv2DLzlx1MDAwZtRttm3tc+P8LDbWd91xo815jsTuY1dBXHUwMDE3zFfbV83T6+4wbbPnXFx7kk1WS7d6/ls+tf377lx1MDAxN+JvYtVWktd/Ib7v6l5OXHUwMDA11niDxb3Ln1HYaSulXHUwMDA14Y9EjEhk6ua9tFx1MDAxNduj7Zb7pDFCgevf22dcdTAwMTmiR/aFXHUwMDBipnbYJm2N6Hx/mzSwXGJ+VCVguSG+QVx1MDAxYuymJdJRefpSqiZGZ+fJ+Mt5lCZcdTAwMWGhX4lcdTAwMGaB3kqN5VvU2N/sQKOElpKw3S+9/5yePmZKg2YqgXr5u1Gzy1x1MDAxYbL2dJZcdKE+XHUwMDExsVx1MDAwMvSMmlx1MDAxNWtcdTAwMWKUjyy/6rCDnpo1XHUwMDBiUmJMwEeT1KtQXFxZ/EtcdTAwMWPLT7VJXHUwMDAzdeBcXMvdN2LaSYBcdTAwMTi+TjFr7Pa390kj/rNLpkGC2dJlXHUwMDAzl5L3XHUwMDFmXG7ZSdRcdTAwMTndXFxcdTAwMWVHxJkuJDvJethcdFx1MDAwYlx1MDAxMfa+qFx1MDAxNDbNgTlcdG2ftFpcdTAwMTNFY7mTp0o2gVx1MDAwYnftaD1Wv8NhlCnuXHUwMDFiRlHMJVx1MDAwM/tcdTAwMWS8Kcvyi1x1MDAwZTvoXHUwMDA13mOVUmb/XHUwMDE1U8P0o1JbUak1dvs7+5lcdTAwMTHuK1BcdTAwMTJcdI5cdTAwMTDaYNl8UY9b5/lnXHUwMDAwbD3CXHUwMDFljqNcdTAwMGYt2a6FnqpYWlpwYXp5Mu3dkpgy/Vx1MDAwNfL0qXZmgjKCXHTa/a5cdTAwMGI7Z+lcdTAwMWbRzixI8tVvdzeDU83FXHUwMDAyNFx1MDAxN4CEmbRcdTAwMTg3XHJ4KWJg8dGS1iWrXGKxLfn5bqp/mlx0QTpBfHiL1KzVcdtcdTAwMDTXfK0r+bSw2TtcdTAwMTeUalx1MDAxNig95SXj3MC3SMetzrT5o9Dz9lx1MDAwNYc14GTi+s3fVucvXHUwMDBm5jZ/Q8wsLKRcdTAwMTCZc2GqJF1nve79xi2z6JCYtbVcdTAwMDSBXqhcdTAwMDVI+E+Pbjz5ucJ4rJ5hWW08vDue8FlxyI/x+Fx1MDAwNuOBqdlIVrCFqqXpi77NjDCVXHUwMDE06WDtoDe0XHUwMDFkmiPXvjh/sO1YvUWMy3aA6VBSaU1cYjP7qjI969/2YTuwhZWpnWVcdTAwMTCAXHSlsVx1MDAxMl9uPNbVXHUwMDE2Sd9cdTAwMTBAS8FcdTAwMTBzXHUwMDE33qxcdTAwMGJcdTAwMDFUOvqsXHUwMDFm6zmcS1x1MDAwZotcdTAwMGbXrWtcdTAwMTm7fFx0XHUwMDBmtZeHXHUwMDAwXHUwMDAyeZauuCt4tt5cdTAwMGZcdTAwMTItyUUtpKIollJcYupTylx1MDAxY3bn/n+8ksj1XGI95/9y//vJhWXEd4kwQZxcYqzc3THW8fGCnVx1MDAxNmr1XHUwMDA3PCrEe+1KqZ2+1PHwN3vAar5NsLfHuPgtp2O3fVx1MDAxZs0ybk19Nl2fqcNZl1+ly9miU5RcdTAwMDXaZflUWzZcdTAwMTKh6fv4xDr9l/5cdTAwMDM5XHUwMDFl2PFIvHxln1x1MDAwZjNso0yzXHUwMDAwJ4Zu4k6spMyKvo++3X+wqYNWwr1L9zq2LL/s0LNFI8tMLFx1MDAxMqXAXHUwMDBikd5cdTAwMTlcdTAwMTYukVx1MDAwNVx1MDAxMSdcdTAwMTOKU/A3xW5cdTAwMTY3bKHvI0ZMXCKhXHUwMDA0Xbd+Z3vc2Xbjx41RP1x1MDAxYuxeNX5cXCMroW786L/d8OvSILTBkr/C883z2K4+606X6U5+XFxHelx1MDAxY6JI1ldesUWFYFiZpLdgniV/XHUwMDAyXHRcYsFcdTAwMTShWlJcIpBcZnNcdTAwMGJcdTAwMGXGMFPY3arze+X2y1x1MDAxNHFcdTAwMWTIfZ1IXHUwMDBlXG5A+Cbt/2MjcnFbxsVkqXVcdTAwMWJP8Ci9z6mj0INcdTAwMWNcXFx1MDAwM4tpkH9CIDJ3d1x03DeQXHUwMDFiJ4b4XHUwMDE2XHL9YHyJ61x1MDAwN46EYlpvUFuTUmNcdTAwMTlvXoyOR3ejSSFnt3tdVFxmP8hcdTAwMDFgZm9mxlx1MDAwMTpcdTAwMDD1/Vx1MDAwNblAJoFG17bw/dNATlfs3Vx1MDAwZVx1MDAwZt1MTFx1MDAwN5+gXHUwMDFmn7cmT6RCXjJHj82JamfLTzRcdTAwMTJ+kFNlSYj5kamk4ZqQvVx1MDAwNTlhXHUwMDFhXHUwMDBlM/VjyT2W3DdcdTAwMDNNXHUwMDEwxVx1MDAxNG6pXHUwMDBlnvJcdTAwMTL5lr4qOZWMvFx1MDAxNZ3xdTWXqz3ehlx1MDAxZuRcXFpKcSVcdTAwMDEjRCPvtnp7XHUwMDA0cspMwzD0XHUwMDAzcq8l981UccEo1WqDRFUy1r066Vx1MDAwZTvR68f6XHUwMDE430fqvVxcOfy9lIiUps7JXHUwMDE4cdOz2pvW3SOMmz1ltKnV+nFXXHUwMDAyuyvK9CjgfFx1MDAwM0t+Q5xEI/X8knmZXGbPn5l6lI1y6PdcdTAwMDVcdTAwMDdwXHRcdTAwMGJ8M1N1S/FcXL/+N5SDoSdMcMVcdTAwMTk47DvaIHVLXHJOKWPCd8fUP1x1MDAxN+X+/lxuNvqNXHUwMDE53SC9Mrqq3Xfq5ydsoFx1MDAxOH4pJFx1MDAwNrH6XfhRXHUwMDBl0LaI5EzAXHUwMDBmpIjaY5RcdTAwMDN0XGIz0yc/KJ/v/uhryyHmpJKKXHJWcVxmnHidtiM3z0JU77DsPqnic/gjT2omhE2rfmmWrFx1MDAxME69IDfY4lxmXFxcdTAwMWFcdTAwMDUw5CHu/lxin8BNXHLS2rZhf1x1MDAxYciFb288XHUwMDEwP1x1MDAxOIfcoGvYSbWYKDQ7OFa6P+6lnHijdnFcdTAwMTP6VeTgkzEw1VJysNRcXGosvCCXXHUwMDE2o1IgXG7BqXJ3+VxyXHUwMDFkyE23Tm7WrPxgfK5GYoW7wpTWUlx1MDAxMFx1MDAxYdySn1xcjnJcXFx1MDAxNJ1cXKafujjq2XcpcVx1MDAxMv4pTyqZZVxuZzmSTCG8YMiFhSSGXHUwMDEwRUqCQ9xcdTAwMThPYsWRlqGpLlxuXHTCiX+jam2asc9lo9ausk5Xm9FhpdzOlPOJ/l01XHUwMDEzaT/vQS92TS2zkSMghyGsNfdcIlx1MDAxY/CvhaBK4GlcdTAwMGbU8GJcXHCi4Vx1MDAwM9Y2qt5fjP96XHUwMDFi32G+07lz4CNcdTAwMGbfK5FcdTAwMGVcdTAwMDc1e3i85I6Xp3/M1U1cdTAwMTliUGhPXHUwMDBimP7+9ff/XHUwMDAz/ujZrSJ9in memory on disk Catalog Schemas Partition commit new partitions get candidate partitions given an expression Indexes Sketch Sketch ... Partition Parquet or Feather Indexes Sketch Sketch ... Parquet or Feather
Because of this transparent optimization, you can just exchange the source of a
pipeline and switch between historical and streaming execution without degrading
performance. A typical use case begins some exploratory data analysis involving
a few export
pipelines, but then would deploy the pipeline on streaming data
by exchanging the source with, say, from kafka
.
The difference between import
and from file <path> read parquet
(or export
and to file <path> write parquet
) is that the storage engine has the extra
catalog and indexes, managing the complexity of dealing with a large set of raw
Parquet files.
Built-in Networking to Create Data Fabrics Tenzir pipelines have built-in network communication, allowing you to create a
distributed fabric of dataflows to express intricate use cases. There are two
types of network connections: implicit and explicit ones:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1bW1PbOlx1MDAxMH7nV2RyXour+6VvXHSXQFx1MDAwZoVcdTAwMDNcdTAwMTRcYj3T6TiOkpg4dmpcdTAwMWJy6fDfj2wgdpyEmNO0cWfsmUCyWkkraffT7kr+sVOpVMPJUFU/VKpqbJmO3fbNUfVdRH9QfmB7ri5C8e/Au/etmLNcdTAwMTeGw+DD+/fmcGgktVxmy1x1MDAxYjzVVI5cdTAwMWEoN1xmNO+/+nel8iP+m+rLsV1cdTAwMTXzxtSkJypAlnrquXGvXHUwMDEwXG5EOJFMzDjsYF93XHUwMDE1qrYu7phOoJKSiFTFXHUwMDEzWPdOXHUwMDFj+/ZcdTAwMTOr02u/ee9+P6sl3XZsx7lcZifO05hMq3fvp4RcbkLf66tcdTAwMWK7XHUwMDFk9qLeM/RZvcDTo09q+d59t+eqIJir41xyTctcdTAwMGUnXHUwMDExXHIkXHUwMDAzNN1u3EZCXHUwMDE5R1x1MDAxY5xcdTAwMTlcdTAwMWNKXHUwMDAyXHUwMDEx5lx1MDAxNFx1MDAxMUjRrDhuQEhcdTAwMDNIxlx1MDAxMSRcdTAwMWMhKFx1MDAxOM5Ituc5nlx1MDAxZkn2XHUwMDE3iJ9EtpZp9btaQLed8FiqTdpmwjN6XHUwMDFlb2pcdTAwMWR6yu72Qk0jXHQtUPGkQyyYXHUwMDE2XHUwMDAzs6Qk6mB43I7X/msy1b45UMdRXHUwMDE1995x0rPltp9na66gXHUwMDE1XHUwMDE1XHUwMDFjpNQoaep+2Dafllx1MDAxYzI9XHUwMDBmnFx1MDAxMom1XGKzcq1a/Wxzjmf1l2hJXHUwMDEwmn5Yt9227XazVZTbXlHimEG451xyXHUwMDA2dqjF+Mez3TDLXHUwMDExt1vzfW/UU+bCoHXLK8uGUXOJ3URP8q2SaEr8Y/b967v13GQtO3sjv5jjR8BcdTAwMDDpXHUwMDA3vq07bFCKOMSMXHUwMDBiXHUwMDAxXHUwMDAwXHUwMDA1UO1C+qZcdTAwMDGm5N1J/3989zZcYlx1MDAxMpivgiBcdTAwMDSBXHUwMDE0XHUwMDAwXHUwMDExynJD0GS//nfjbO/ztHOCmrsn17XDJm9cdTAwMTVcdTAwMWSCKM5A0HZcdTAwMTBoXqGSXmaAhKXBXHRmXHUwMDFhhKDkXHUwMDAyULKAT1RIPVx1MDAwZVx1MDAwMpI9o8SnwuBcdTAwMTNcdTAwMTRcdTAwMDaiXHUwMDE0XHUwMDEwrURAf5BM14bZtV3X2i7UXHUwMDE1iKScXHUwMDBiqT9cdTAwMWNIkm5vQVfWtcfnpcPotdbQ2ta4IVx1MDAwNIGMIVx1MDAwMphEiUnFYzVcdTAwMDSFXHUwMDAwcqHxhXAosNhcbvKxlKuRRT4gOVx1MDAwNkhPcG7kXHUwMDFiXGZcdTAwMWW+2W10NZqc1ih3T1x1MDAwMNpvoKIjXHUwMDFmpoVAvlxcvpfQWlx1MDAwZbS+J5tRiW2FwTaUcY5KX+1nXHUwMDEwy4zWbFx1MDAxOWSt9tWgIIhcdTAwMTKNqvl9tdMvLXDbrMvrh9rkjPTCXHUwMDAzXHUwMDBmN4ZFRyz0KmJp3M6LWFxuYIjh64ilpLJUZ1x1MDAxMbEgWlx1MDAwMllcdTAwMGKIxSSRXGJsJFj8MVOgXHUwMDE3XHUwMDFkedmBXHUwMDFmS1x1MDAxY9uoj4Z+jeFSmCW+XHUwMDE4LtM+O9P+Vn67bV1dwM7uXcPaZT1yd3lv9T829otut+TVXHUwMDE4q1B2XHUwMDBiOZWUYSY2XHUwMDEwRZWG+2dcdTAwMThuqMbhMruFWGapSXZcdTAwMDRigClC+WOEw8Nv/vH5dL/Xx03AxqqLXHUwMDFhlFx1MDAxNt1yXHUwMDExj9wnooM5gDmmIJmQuD75LZaLKDKwjj1cdTAwMTnW4Vwi1UaQ4MfMkFFCe7FkKTiDlIBccmzBW4hcdTAwMTk6nlx1MDAxYl7a06eAdI56aFx1MDAwZWxnMreksVx1MDAwNusptFx1MDAwN0PH1otbcVU48vx+xfJcXFdZYaTPc8w1x+5GKl619CCUP6f9oW2Zzowh9FJuoW4uNHVE7S9Ol+fbXds1nc9vXHUwMDExJYrOj16WXHUwMDEwXHUwMDFhqUVsmYGKY/fIu33VeldG+IBlqYm/zCFcIlxmpFx1MDAwMs111tu4/MRF1+/fmuOL6bhcdTAwMDFMfl13im69WXd5/nRcdTAwMDXnt95fXHUwMDFm4Vx1MDAwYsE1QqCtJi8pXHUwMDEyXHUwMDAw8bRylvvrXCJ3XHUwMDE5sD9cdTAwMTHXXHUwMDFmrjCapc5cdTAwMDCIXHRO9O4k8rtcdTAwMGbHdzWtoV+uvoxUu9VcdTAwMWS7kFxmJ7zoXHUwMDAwhGAxXHUwMDEwaFx1MDAwM6crulx1MDAxMFJcZlhSUlx1MDAwMlRhXHUwMDAwqjxdeVx1MDAxOWtBTlc4zlKT01x1MDAxNcSZhG+JnGRzdGpfXHKvXHUwMDBlLa9pT0emj/rndtGhXHUwMDBmZnNcdTAwMWVcdTAwMDV2vqDEXHUwMDA0XGIg8TaPV0pwK49Xtnm8kto1lmBcdTAwMTaRksg3uGvhXHK3XHUwMDFhk4+nvXP/JDzYb3b6XHUwMDBm3ydFxywkpaF3XHUwMDBmytB8hlx1MDAxNrPfk6GV2MB6kpcmeJacXHRjvcdFV/J+XHUwMDFltDadqaWY6lxyvcSyXHUwMDA17iVLnKmXy4hXZ2xX5nxcdTAwMTjV8MKJyJ/y2TuYXFzc1I8+3bpcdTAwMWb7u+d3XHUwMDE38O+Di8LfqEWMXHUwMDFiXHUwMDA0R7fANKpqV1x1MDAxMyaQXHUwMDE1W/LvOWtBVEtBtfPMXHUwMDA1RlFeJ1/GVlx1MDAwMC2w9kL+zFx1MDAxYmz/K2OrxoXJ2OZcdTAwMTLll2Zs0cqogVx1MDAxMcBltFxy57Ze+E1cdTAwMDT+0SknZ7tHwd1l/aZmtnpFt15cIl87KC1UzMCQXHUwMDA0evdNXHUwMDE1bCFkwFx1MDAwMFwikdbNcptd5C5DgCfi+oStWHknVFx1MDAxYlx1MDAxYkWYQpbffahdTWt73Vx1MDAxYvMw8LsuU8zqqcZ50Vx1MDAwMYi9esPqXHUwMDBmytdcIqi1iqJNXFzjKOFp41FAma59XHUwMDFla0HStXLlm4ja51x1MDAwMlxmXHUwMDEyXGLye17Txun0+Fx1MDAwMKLG2dFdYI+Dh4NcdTAwMGLnc9GBj2bfRCyu51x1MDAxNb2ZXHUwMDA1XGLebphUYluZrd2kq7bzXFy/alx1MDAwZYeXoda16ktWrvpgq1F9iVx1MDAxNXXip7rzjHdcdTAwMTGwqDiZ97jz+Fx1MDAxZlx1MDAxZVs7eiJ9implicit network connection explicit network connection
An implicit network connection exists, for example, when you use the tenzir
binary on the command line to run a pipeline that ends in
import
:
tenzir 'load gcs bkt/eve.json
| read suricata
| where #schema != "suricata.stats"
| import
'
This results in the following pipeline execution:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO2ba1PiSFx1MDAxN8ff+yks9u2Y7ftl38k4jrdHnXW8MFtbUyE0XHUwMDEwjUlMgqBT892fk6hcdTAwMDRcItHgXHUwMDAyK7PEXHUwMDAyobuT7nTO/9fnnIRcdTAwMWZr6+u15C40tT/Wa2bg2J7biux+7UNafmui2FxyfKhcItn3OOhFTtaymyRh/Mfvv9thaOV7WU5w/bCn8cy18ZNcdTAwMTja/lx1MDAwNd/X139k7yN9ea5vsrZZad6TlqpYelx1MDAxOPhZr5hzgqlklFxmW7jxXHUwMDE2dJWYXHUwMDE2VLdtLzZ5TVpU879cdTAwMWNcXF5dXHUwMDFlXHUwMDA2n7e58vZcdTAwMDJcdTAwMTPuJ9snebdt1/NOkjsvXHUwMDFikVx1MDAxM1x1MDAwNXG80bVcdTAwMTOnm7eIkyi4MuduK+mmIyiUXHUwMDBm941cdTAwMDOYgXyvKOh1ur6J47F9gtB23OQuLUNoWGr7nexcdTAwMTh5ySCdcIIsgSlnmlx1MDAxMkYxXHUwMDE5Oef0XHUwMDAwRHNcdTAwMGJcdTAwMTGMOdaUIcWQKIzsY+BcdTAwMDVROrIksv04tCO4XHUwMDFh+fiatnPVgUH6rWG731xiUU0j8jb9x3Nm+cC6xu10k/Gy2GSTT1x1MDAxMEFcdTAwMTQrKvOBpFx1MDAxZIS7rcxcdTAwMDb+zqc8sq/N7sPFiVx1MDAwZi7P7lx1MDAxYjvoVFx1MDAwZr7ei1x1MDAwYnKws6XHJtFvPU6i3/O8fPRpxadcdTAwMTFcdTAwMGLLj95cdTAwMGJb9oM1YKGFlFxcSEq4XHUwMDFl1oPVXVx1MDAxNVx1MDAwZudcdTAwMDXO1Vx1MDAwNFx1MDAwM4pcdTAwMTM7Suqu33L9TnFcdTAwMTfjt0pqPDtOPlx1MDAwNtfXblx1MDAwMsM4XHUwMDBlXFw/KbbIjrtcdTAwMTlFQb9r7NaEI5fWhenhckmlW/5pPTeg7Mvw899cdTAwMWZeb81ebVx1MDAwZeaIxjY23f5srD9Sob+3n81I67XR/z8/TIdcIlxmtCllXHUwMDExTIHkWoqcVq+yqKcvtq9ss3mwXHUwMDE5+qc38bE6vMHLwFwirFx1MDAxNs1cIiWU0ZNYhC3JmOZSKlxyL5mfz1x1MDAwYmiCkWnFsMxNdoWm5UHT66jYKFx1MDAxOFx1MDAwNdJjbKJcdTAwMWGqqaBKYPAtXHUwMDEwZ9Ohalq0/Tuo0oiXkopcdTAwMTApmFx1MDAxMCpcdTAwMTfGa6TaQ59cdTAwMWLf0c432m9ttPvyTN5cdTAwMWV/sktI1bWdbi8yv1x1MDAxMKV+wyb9e5FQXHUwMDEzSfZEKVXNY1x1MDAxMoAlXCJGhrmi0i9EpSkhXCKmbK9cbsNcdTAwMTn3zvB03VFcdTAwMGJcIiuJqZBKIcRcdTAwMTE2XHUwMDFimP87XHUwMDFjU6VcdTAwMWVcdTAwMTdcdTAwMTdcZsxT6Vxct69h7Cw4kE7ja7jLP13gxqD7vdn+XHUwMDEyLYPDRVFcdTAwMDFl8/a3XHUwMDE4clx1MDAxMJdvjf0wXHUwMDEymChN1crBWkKUrWK/kthPXHUwMDE0i59IJDVWjKIp0lD1Y2ZfNPY3tztccr/VbJ8lTsPxloFERCyYRKVZqLdEfpJLgdXKw1pcdTAwMTIsYWVcdTAwMTHOXHUwMDExI1x1MDAwNCN4XHUwMDExPbo3njaMW4WFXHUwMDEwiWhdLH2CXHUwMDE4QVx1MDAxNOJcdTAwMGapSfVcdTAwMDTWXHUwMDFkXHUwMDEz9c+k4Z/40TFqOvWr3cPzo/dcdTAwMWVcdTAwMTbOimBcdTAwMGKKXG6x0im0VrmqJWFcdTAwMTZZhYVcdTAwMGJJb+Fi6TC9pYVgSpEp0lsnW4Po9vzUJn33OGhGza9Hd1x1MDAxYmVcdTAwMWN7V95cdTAwMTggamEsK41cdKtxTFwipCVcdTAwMTjPyvdacWx9xbGnqFx1MDAxMvRZXG4yULRcdTAwMDbnXHUwMDE3V09woZ3OkXdQv0q2T0nv821oXHUwMDBld/w/l1x1MDAwMWR80WFl6VxyxWqpelx0XHUwMDE3RvCRe70rmL1nmP2jSG32+az3XHUwMDEwXHRiwsrJw5Ek07lQe6y5Te+p19jc27o8Nd557/pibynIU3yuat7kKU2tvyWhRZBgKH1bkWg5SLRKaU1o/Y9ANpqwKt4hZJhqeKvuQN3dNra9fVRP7lx1MDAwZs82j8OrZFx1MDAxN3V23ntGa1ZcYltURosrKUBcdTAwMDJyXHUwMDE1XG4uXHUwMDA3s+ZcdTAwMWNcbqop20ttaUHBlrFATGuMx0dnIVBcdTAwMDKVijHFgYdiuu7nyzA7vV6TIEZo+YOlXHUwMDFhKIYx1tXvLoZtNUhcdTAwMWM32t3fo4KdXHUwMDBmtjpfuv33TjH2XCLFKK5MMYMoTNjLTpjRxjHt51x1MDAwNMNkXHUwMDAywp5cdTAwMTGMXHTKKKF5UmGmXHUwMDAw+zE0qie7IY8lP1dcXJupL1b6XFxBJTEnZpBM0rLQpYFcdTAwMTVTXHUwMDA0bJuz/GbOq3FV0vdvuslFs4dcdTAwMGW2jv3+4OaGL0dcXEWZJTnjgGrNNNKFhy+Fslx1MDAxOFx1MDAxMyh1TqXQI2KfZWaaXHUwMDBicLaf61x1MDAxOdzsfDRP6WmmXHUwMDE5V4r/Mr9WaVx1MDAwN35y4t5nK4hcdTAwMTgr3bavXS9j6rA4M2U4Jfc6XGaiXHUwMDExo07LNz2342fmXHUwMDA14zXRmMUnrmN7w1x1MDAwNklcdTAwMTDmtVx1MDAwZfRkg8tcdTAwMWXtPlx1MDAxM3FcdTAwMTC5XHUwMDFk17e9ryW9pp7+zvBijVxcq6ZcdTAwMWSbLFxmSJ3IN2lTSlQsfdKmXHUwMDAyR1x1MDAxOSyRVc95XHUwMDFj9rpsn3v1XHUwMDAz8u3jxifc1Jr735dBm7CGWiBcdTAwMThMwX1cImBiuFx1MDAxMDFcYm5xXHUwMDA1alBcYlx0jPh8blx1MDAxYlFpVdQmXHUwMDA2ZUpcdTAwMGVcdTAwMDHsfNbbZVx1MDAxMadcdTAwMTfYrUVLc7zPOVxuU4nyX3lKhDHDWlZcdTAwMGbjlVx1MDAxNsb3u577cWvL9r9cdTAwMWZd/k/Ul+PxOsktKiRijDBcYpB5fpTMJlx1MDAxOLeI1khRrrkmcj6r5lx1MDAxNMLk4EIpQtkv83DKm4RcdTAwMTmZxVx1MDAwYnO8zzlcblPzXHUwMDE3fn5ccnZKhebVI1N5XHUwMDE2XHKEf9fo29/I/p/o7HJwdFlfXHUwMDA2YcJSaUmNwGOFXHJcdTAwMGI0LkxcIrCllU5cdTAwMTnFXHUwMDE5krCAzkWZTFiwXHUwMDEwVtMmh1xiXHUwMDE1g1x1MDAwZf7bayZcdTAwMDSRo7mNxWiz0OlcZsSZXaRJ6uREli+bXG4jXHUwMDAxXHUwMDFlbXWH9lx1MDAxNVx1MDAwM3ifeaP824NcdTAwMTJRoedZprcnJIcwRlx1MDAxNlx1MDAwMVx1MDAwNlJMwJtOt2erpFx1MDAxNlx1MDAwMsO1UNWlOGZeM9BcdTAwMWTC4C9gTkdtsqru/NT0XHUwMDFlmj7Y6NpjQqVmh+FJXHUwMDAy3dSecla1W9f061x1MDAxM4DWzrba2qOFp5ZkslTXz7Wf/1x1MDAwN1xmXfFcdTAwMDIifQ==import load read where
A historical query, like export | where <expr> | to <connector>
, has the
network connection at the other end:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1a61faSlx1MDAxMP/uX+GhX2u670e/KWq1x1x1MDAwN7dYqb2npycmXHUwMDBiRENcdTAwMTKT+KLH//1Oolx1MDAxMIgg4EUrXHUwMDFlomgyO7szuzvz25khf1ZWVyvpbWQqn1cr5saxfc+N7evKx4x+ZeLEXHUwMDBiXHUwMDAzaFwi+XNcdTAwMTJexk7O2U7TKPn86ZNcdTAwMWRFVtHLcsLOfU/jm45cdNJcdTAwMDR4/4Xn1dU/+d9cdTAwMDFZvlx1MDAxN5icN6dcdTAwMTaSMOKyTD5cYoNcXCzWQkjMkVx1MDAxNn1cdTAwMGUv2Vx1MDAwNFmpcaG5afuJKVoyUuUribc4222ttTqhdNZ2jn+qo9NCbtPz/Xp66+cqOXGYJGttO3XaXHUwMDA1R5LG4blpeG7azjQo0ft9k1x1MDAxMJag6Fx1MDAxNYeXrXZgkmSoT1x1MDAxONmOl97ms0R9qlx1MDAxZLTyMVxuyk224lx1MDAwMltKccxcdENcZibOizlnXHUwMDAzXHUwMDEwTS2thSRcZlx1MDAwYiWxpiXFqqFcdTAwMWbGmWJpbFx1MDAwN0lkx7BcdTAwMWKFeqe2c95cdTAwMDJcdTAwMWRcdTAwMDO3z/eBIVx1MDAwN5a+4Ll+mDIr9GpcdTAwMWKv1U6HaYnJ115T0FVoxPpcctn40a6bm8CvYsFju2N2861cdJK9s+PuyVx1MDAwZfqub4664lx1MDAwN9nb2dRDS1x1MDAxOLhcdTAwMGZLXHUwMDE4XFz6fqF81rA1YGDF6JeRa9/bXHUwMDAy6FwipOSSII14v1x1MDAxZIzuvDycXHUwMDFmOucjzCdJ7Tjd8Fx1MDAwMtdcdTAwMGJa5S4mcMe0+HaSVsNOx0tBjVroXHUwMDA1aZkjXHUwMDFmdz2Ow+u2sd1cdTAwMTEjj22LsuFcbo/KruJutTCf/KF//+vjZG42kZ0gXHUwMDBiXHJdbLb+bEhcdTAwMWWZQt7zZzPAvTL4/+7jjEhENC6Te0ikKKLwS9TUQJT+sK9s451cdTAwMWbt3P7Y/3pyWK1cdTAwMWVH3kJcdTAwMDBcdTAwMTF5ZSBSQlx1MDAxOS1GXHUwMDAwXHUwMDExtiRjmkupNHxkMZ0ncYlcdTAwMTOMQPklLi1cdTAwMWUuTcaJtZJNID1cdTAwMDRMVEMzXHUwMDE1VFx0rKVCnM2GU7Pi2t/BKa1omdqDKYJkZm6YXHUwMDE1x/IknELB4W5yVr26XHS/0+szXHUwMDFkOYz/k4zBqbbttC9j834w6lx1MDAwMzbZz5P4NFx1MDAxMsd6XHUwMDE4paZcbpaYoFx1MDAwMnRZXHUwMDA2S+9cdTAwMTOUZsRcdTAwMTAxI78qqTNcdTAwMWOZ4dnEUYtzXCIxXHUwMDE1UimEOMJmXHLzv1x1MDAwNGO8TC3yPrggXHUwMDFjK6LCiTDW3GQobf8+oNtOUttz1/2L7e7JXCKEW1x1MDAxNL1cdTAwMWWUjc35poMxLFx1MDAxOSaUqVx1MDAwMVx1MDAxNZc49pZxjCyB7DXyRsg3xlwiXHUwMDE51VJwJmdcYshcdTAwMWGdajc8vjqodt1G57C5tXdIwFx1MDAwNFx1MDAxN1x1MDAwMMl4KSj7a3njdFx1MDAwNSwlhaBSLWOyxcCy/5Wozb9g9Vx1MDAxNlx1MDAxMkFMyVjg4VxiSTjqXHUwMDA36iCTcOew07g04bpcdTAwMWLXt2rJZtdcdTAwMTGn5MvZXCLgXHUwMDBlU2+lcv6cglx1MDAxNcGYgfZqYJpLIHrLQISVRThHjFx1MDAxMIzgQ/RgbzxrXHUwMDAxalnQyl1cXJXJPVx1MDAxY6NcYlx1MDAxMVxujj194d2urd3u81x1MDAxZHeTst9J3aFcdTAwMDebabP71lx1MDAwYlrzwrBXKmhRToRcdTAwMTCcLlx1MDAxM8HFwKxcdTAwMTdOXHUwMDA01Yz8UltaUMpcdTAwMTBcdTAwMTaIaY3xsHZcdTAwMTainGWhOVNcdTAwMWPwUMwm/mUxzM72a1x1MDAxNIhRPD5cdJSMM64wnf41XHUwMDA2+0sjQG6rvoG9XfPte3hwXaNcdTAwMWJvXHUwMDFkxOjTIEbxtCBmXHUwMDEw8OKngzCjjWOaj1x1MDAwMVxmk1x1MDAxMVxi9jjqolSChemXXHUwMDAxsD99o+rZXHJ5oNwtcW2usdjY91x1MDAwNqZy5tTcpCNcdTAwMDNcdTAwMTLCRJncc2bBKFVDtj3Jl8PaxubNb36x73ZcXHZtXHUwMDA0a12tfVuExFxuIM1cIopcdTAwMTClKaCwRv1I996dXHUwMDE5s5BASiDCmYZcYkWWXHUwMDE0m09pmlx0S8nC9vsuXHKRdpHb9lxu1DR7X0zB9V7ikmZcdTAwMTikda+bn1wiYoi6bXc8P9+HPjk3Z5hcdTAwMTL43eBxkJHXfa9cdTAwMTXkXHUwMDA2XHUwMDA26pp4yOhTz7H9PkNcdTAwMWFGRatcdTAwMDOCbIja491Hflx1MDAxY8Zey1x1MDAwYmz/aLTQLNbf6e/VwFad2onJXHUwMDEzXHUwMDAxIPPneSfkXHUwMDAzY4/aLJXWXHUwMDAyz1D3OL6ijebPdu3gtN7aTpDq2rU6WVx1MDAwNPckhFtcblx1MDAwZVNCXHUwMDEwkrAoXHUwMDAzXHUwMDA3ap4zXGJIVOFcdTAwMTRGXG7SSySRKCk2XHUwMDFm9+RcdTAwMDKy4Wm9UylwXHUwMDAzwd5NpeNZ3mluojBOX9s9y1Jf0j9cdTAwMTlcdTAwMWH/Ri9cdTAwMTOMQ+w1wze7rLFv7PpcdTAwMDU/XHRv10/R7c9LXHUwMDEz1vxF8E9cdTAwMGXxLlx1MDAxN5hRXHUwMDAycCThZtg9JbIoUkRnTlx1MDAwMdFyWa/5uCdW1tSHJ4KMnnEk3s03XCLPcs80fG3XXHUwMDFjlDhcdTAwMDe3zLdnlF+CXHUwMDExjnVLqbLtn+WFi1x0W/82M9Ti6f6ERCXJ86yjjUhDMUZcdTAwMTZcdTAwMTGaU0gwdH49ckItXHUwMDA0hr1Q05+RQ7Y1XHUwMDA3j0NYc405XHUwMDFktMlpPS7ITO+e9d5GV1x1MDAxZVK3ilx1MDAxZEX1XHUwMDE0xFR62XHlyjPXXHUwMDFiI6CsmV+VlVx1MDAwN1x1MDAwYs8syeRJ9d3K3X97k95cdTAwMDIifQ==where export to
Tenzir pipelines are eschewing networking to minimize latency and maximize
throughput. So we generally transfer ownership of operators between processes as
late as possible to prefer local, high-bandwidth communication. For maximum
control over placement of computation, you can override the automatic operator
location with the local
and remote
operator
modifiers .
The above examples are implicit network connections because they're not visible
in the pipeline definition. An explicit network connection terminates a pipeline
as source or sink:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1daVfizLb+3r/C5f36klO75jrfXHUwMDE4XHUwMDE00dZG0Xa45yxXhDBcYlx1MDAxMmRcdTAwMTJ4V//3u1x1MDAwYltcYkNcdTAwMThcdTAwMTTs+F5Y3XabhEol2c+zx9r5+9ve3n673/D2/7237/Xybq1SaLov+3/Z7V2v2ar4ddxFh7+3/E4zPzyy3G43Wv/+17/cRsNcdTAwMTl/y8n7T6/f9Grek1dvt/DY/8Xf9/b+XHUwMDFl/lxmnKtWqXvDY4dbx2eSWk5vPfPrw7NyLrhQkvLRXHUwMDAxlVZcbs/U9lxuuLfo1lreeI/dtJ8/V1Qmrm5cdTAwMGUvXHUwMDBmXHUwMDEzydpFg7Z6J4GzXHUwMDE2K7Vart2vvV6Smy93moG9rXbTr3rXlUK7jPthavvoey1cdTAwMWYvfvytpt8pleteqzXxXHUwMDFkv+HmK+2+3UbIaKtbL1xyx1x1MDAxOG/p4W/MOExcdTAwMTj8YyRTRlx1MDAxMTbaa79PKXGMXHUwMDEwuEdrJVx1MDAxNFx1MDAxN1PzSvo1v2nn9T9k+Fx1MDAxOc/swc1XSzi9emF8TN4r8II7Publ99Xq8ZTKXqVUbtvbP97W8oa3XFwozYyWjI522PFcdTAwMWKZwvC5/3d8n5vuk5ex36h3arXgrapcdTAwMTd+36qJXHUwMDFkXHUwMDBmdsdBQITGQ3VcdTAwMWFcdTAwMDX39XmDNFIpoVx1MDAwNadMj/ajWFWnh6v5+epcdTAwMWNcdTAwMTFptd1mO1GpXHUwMDE3KvXS9Fe8eiFkT81ttZP+01OljdPI+pV6e/qI4bjxZtN/KXvuzEXjyKH7XHUwMDFhdrgxZuxn/L+9sZhcZn9cdTAwMTn9/79/LT+aLz1cXK55vJ44XHUwMDFlhZJcdTAwMDQ/sN7pmCNcdTAwMDRVwKTSmlx1MDAxMEHAi4FY61x1MDAwMlx1MDAwM/P9XHUwMDE2/PfXX+vRj1x0XHUwMDAwaop+XHUwMDAwuKBUKTYmqGX8w7xcXLHRyNXcXHUwMDE3XHLN7M/Tq16vfVx1MDAxOXX+XHUwMDAxXHUwMDEzXHRcdTAwMDKaXHUwMDE0qPFcdTAwMWNGfIQ8qTiTTEswSlx1MDAxMzFWXHUwMDBiv+mJXHUwMDEypaXmjI7pYcdPkeEn0Fx1MDAwZVx1MDAxNYJwSoHgX2qC34bpZ7tstFx1MDAxOOBcdTAwMTe4XHUwMDExSmmDf1x1MDAxNTE8ON6MrCxcdTAwMWJPTc5urOLmjUaXjqZcdTAwMWOtOUi0XYg0XHUwMDE0xMS1OlpcdTAwMDBcdTAwMDGlXHUwMDAxJ61AM/1HmE9cdDa9dcR8TKHlJY1e3fLyXG45eVBcdTAwMWO0qvlsx/yg/nNa3D5HnvkgXHUwMDEyzLeK6aUkQzmXgVx1MDAxZDtqi1xmtdEp22hnqm2FsIie3vpGWMjOYEDA2DFZxlfpot+4dr1cXO6lRMup+3NcdTAwMTaH3EvU+Yovdlx1MDAxNWGar6Zn9pmEZZjV8ZzvbLFcYlx1MDAxMtaOgOzPtX1FqUItJiFcdTAwMTSAXCKrXHUwMDFiTMeXN1x1MDAxOf9cdTAwMTGOyVX1pH6byMlkuuFHnYDElKv4Z+jn456i1lxm8FwiYFx1MDAxN8iKIDntXHUwMDFjxbdrjYijqMJDZFx1MDAwNFx1MDAwNKVCw+ohstOn5lx061ZPb1x1MDAxYb2Ls9ZcdTAwMDNkst3HQeR5XHUwMDBmosB7q5hdKEpcdTAwMWGFPeC575gtMsy281x1MDAxM1x1MDAxN13gxvhcblx1MDAxNoT0tUBcdTAwMDSv4Sdmv2u/QfRzmcczilWu5c/Ll1TU6WqJn1x1MDAxOKW4XHUwMDE206jjkDTGXG5kx1eR4atcdTAwMWT/2J9ru4mKT29cdTAwMWTxj2JcdTAwMTJhydZcYqyft/tcdP8mc1x1MDAxYn9cdTAwMTCdh6J8hOejXHUwMDE0jzpcdTAwMDEt9Fx1MDAxM79OQlx1MDAxMdDoloLvXG5cdTAwMWVcIslOOz/x7Voj4idqOr11zHtKXHUwMDE5YCRcdTAwMTBccl7Ge/R5cJJMPZZOYo3W2Vx1MDAxZNRrXt6NfCnXQj8xSmZcdTAwMTdcYlx1MDAwMYxcdL1cdTAwMGLPR5HZdn7iolx1MDAwYtxcdTAwMThf0VC+olx1MDAwNKhmazmKz91y5vDy4aDmytaDien498PmddT5aomjyKLEWEqgOcbNLrJcdTAwMTVFxtoxkP25tqeoYXrrXHUwMDFiXHUwMDAzSVxynGi6RmD9Xrm1+kX8sJhMy+OXgXxMXHUwMDBiXHUwMDExfYNpkaP4WfSzgXxcIjJcdTAwMTOXfFedXHUwMDE1RW7a+Ylv11x1MDAxYVx1MDAxNT/RTG9cdTAwMWTZXUoyIYlYnfWusrlis9/MZVx1MDAxYSenxydMXHUwMDFltu+7ka+4X+gmRsroYlx1MDAwNllccpTcuYlcdTAwMTEktp2buOhcdTAwMDLXpSvXPrN5fEVcdTAwMDWZ3jriKyOk4kSt7iaW0nnvoFx1MDAxNqurwenZ+YCleCZ3XHUwMDFjizpfMWpcdTAwMWNKUf1QQpRCPpggLEqVI6UmiFWuOJVmal5jMvJcYlx1MDAwM1x1MDAwNotcdMszXt4rzlx1MDAxMlx1MDAxNlx1MDAwMFxulF1cZsqNQUNLjM8y4i8tXHUwMDFkXHUwMDA1VGqlhdGCzobzjaSUw0ZqUv9cdTAwMWVJ15tcdTAwMDC96eZfO5LbqPVcdTAwMTb23O0nNv3IN4Z5XHUwMDFkujhGMUo1Z2p1XHUwMDFihSd+dE+flOpccrpxMIxkSK5RjD7mtbU9kfykXHUwMDEyIFx1MDAwM2bIXHUwMDEw80I5hlx1MDAwZlx1MDAxN1x0gaB46+XUxDZcdTAwMDd6rlx1MDAwMXBcdTAwMWUgiFx1MDAxMmZMtGPUU5xcdHC0kCnhwZjeW4VcdTAwMDFBbuKGbCBu9Fx1MDAwNUFcdTAwMWaY8u81+pnXlarZVueplmlfP2XOXHUwMDA3sYfry3LxeoxcdTAwMDR7O/x8Zyg9XHUwMDBlXHUwMDAyXHUwMDBmXVx1MDAxMMY4XHUwMDA1XHJyXGZcZnsn3YZFXHUwMDA0PiPB0amgXHUwMDE0tSFcdTAwMTiYuSlfim3mXHUwMDBinP1Mi9qm2Fx1MDAwNsLjQENyY0SsUTHwdO+mS3k3UWp2e278KkZdKDQjTzdLSpb4qk7RR+jGoLutUYy5RGFHQ2Z8llx1MDAxMdvM9kRcdTAwMDCNUlx1MDAxZqyA/f9EL1/Tplxifc5T315cdNWhYVx1MDAwZVx1MDAxNrpcXM1cdTAwMDZf1IRcdTAwMWS6XGbTXHUwMDBm/dOfPdVwXHUwMDBigiaz6ibOKEmzqGN6SXaJ6+hcdTAwMDQ67Dy4lGRcdTAwMTfAjSBcXHdxXHUwMDBi+3Pt5JJcdF+txlx1MDAxOSFUcLZ63Fx1MDAwMu5TnUr2MZnn593vsZPYc6/3XHUwMDEw+fWyXHUwMDBis0ufRT9cdTAwMWIoQ+RGXHUwMDEwI1x1MDAxNN2xU1x1MDAwNNlpl156u9ZopJfwOsJ4z95cdTAwMDP03tZYpXuRvWqZyv1p6aj0WOjHr55ZpXBcdTAwMWJ52luUXoqS1YVcbohLJXe0XHUwMDE2QVrbJZdcdTAwMTZd4MaSSzyA5im2QtEktmZ6ZbLq93IuT5HUWeGulj0p3eSKpVQ+6mQlkY+Y5lx1MDAwMoQyoGQglTZMhnPUh4pcdTAwMDPeXG67zliGL639SNyH0Tl0XHUwMDA1coavwNiOJobtalx1MDAxMKPIWEI7RnFt61x1MDAxNSihZtxX1n5ixNGgrSgxxDs+W71cdTAwMTTwXHUwMDBix1PGXHUwMDAxXHJDmeSoSZlZathRXHRcdTAwMGU6XSCEpjZcdTAwMThcdTAwMDJ8m+OBmFx1MDAxY3C54UlcdTAwMTFqXHUwMDA2NTJcdTAwMDGJ91x1MDAwN6hYcbiV+K/t9drz6I+J8Fx1MDAxYWxg2jZcdTAwMTFaI/LNXHUwMDFmK/HsXHUwMDE15PtHg/tW8aJ8WG/Aplx0sOBbXHUwMDFjbJJcdTAwMDGpYY6WeGvRdqaMqTG2+6/OnyOpYOiya6q50lx1MDAxZlx1MDAwYn1zkidCzVKgXHUwMDEyKOzGMI5mPcNcdTAwMTONL2VEiDRw5rfyIC0o5Vp9zfVxRb/ezlVcdTAwMDavXHUwMDA1/1x1MDAxM1tcdTAwMGbdp0qtP/FEh1x1MDAxMox38M5r+qfn+1x1MDAxM9vjtUrJSvN+XHUwMDFl5+s1J1x1MDAwNL1dybu10Vx1MDAwMW2/Md6bxzO56MU0Z++M36yUKnW3dlx1MDAxOXJW6/xcdTAwMWONNJVcdTAwMTN4NFx1MDAwZm7LXHUwMDFiukY2rfQ+m4SGr5+XXHUwMDFj1bTgq0OyW74uXHUwMDBlKo/nd+JKnbDyrai0L7tRt0mQTz8vXHUwMDE5XHUwMDE1hkg+xyaZ0+5DSctcdTAwMGW70ND7LVx1MDAxMkvp49u/UZOEf8hpXGJTmtyEL7Rktq1cdTAwMTUzayD0olJ9rLNOOZMw19xcdTAwMDNz2SnLUvSVptZcdTAwMGVcdTAwMTgwgjFEj5CTblx1MDAwM6XoNth2bISif4fajE7NbDNcdTAwMTDFs1xiSlxmVVx1MDAwNFGAqpnOSVx1MDAxOFx1MDAwM3WQQbRRaHfisdxcdTAwMDQqZd5cdTAwMTZcdTAwMGYo9G/411eiQFx1MDAxY1x1MDAxY4SB9aqRmMQ4dLlMqWavXHUwMDEyn61RJ065kjo171x1MDAwMqtcXNBg/jXAS8nqeeDibVxyaOOkfXxcdTAwMDGlxtmZvros3t1EXHUwMDFlrFx1MDAxYyVDMIHus5CCmUBD/df+WcpBn1x1MDAxYVxyXHUwMDBibTTaXHUwMDE38LFcdTAwMDLSULCi0ka3hlOUTKVhJazOXHUwMDE0k1x1MDAwMZWMXHUwMDEwLfXX1LdcdTAwMWJcdTAwMDFr7vPBmvsksFx1MDAwNvumTZd9XHUwMDFhTShcdTAwMDQrXHUwMDEwl2FVJ7zY4V3zMXF5out+9rR/3+xtuiX6Z2OVUuZcdTAwMTDUd1Irg0Io6JZcdTAwMTTrRrCKip/zXHUwMDFkVv+hWNU6VLEqtFx1MDAwZVx1MDAxOV9j7eziativXHRVxqnDXGZoLqUwilx1MDAwN4QwekjVWlx1MDAxMsWo2HpcdTAwMTe43zv2XHUwMDAytZZ7q5XpT8jka+hktOfX7//teOBcdTAwMGbwXHUwMDAwXG5UKFx1MDAwZlx1MDAxMETHWl2HXHUwMDEyZy2vXv1cdTAwMTE/rqqDXHUwMDEz2i30L/VVI/JEgNrYodKWg6A/TIMwXHUwMDFhXHUwMDEyXHUwMDAxXHUwMDE4h1x1MDAxOMtcdTAwMDSCMqpYYGnLRuNVzFx1MDAxMdrYiFx1MDAxOUOwXHUwMDEz+T4qXHUwMDEw1lx1MDAxOdbsi3bm3owz3PRcdTAwMGKdfFx1MDAxMJOf5Fx1MDAxMc+cd4uotamkMNhSYZdyab06bFWanmfrVzfVa1KN36RcdTAwMGVY77IpXCJcdTAwMGZbprXDiO0wSFx1MDAxOedcIlD4Z78vXGJ3pNZKK4G6UWiyJdhyXHUwMDA3TWSUT7A1XHUwMDExLFx1MDAxMDhcXEeBXHUwMDAz2IUx8EVcdTAwMTPjXHUwMDFigW3Sr6NcdTAwMTH5+bCdPe9cdTAwMTZhSyG0XFxcdTAwMDUlQFM0m9YoKk5cdTAwMWTfPl3c69rAc5OP+ZuLTDp5UY88bFx1MDAwNVx1MDAwM4chdrnVqchjk/laTlx1MDAwNZrdXHUwMDEy0KA1glx1MDAxYWk+tjIyXGa2XHUwMDAyqWOJsp3N11JcdTAwMDS4IfBnk0U4Xc6CsrrVdO2JW6y6IZCsecX2XHUwMDE2XHUwMDAwOXXKraZqmVxmXHJYccZsZ+1AXHUwMDE10zI4dtzzpMn19H2CpZuskislepnzXHLDceO5Wr2w5eanLFx1MDAxYoTVUrWoPKWmgv3DW51cdTAwMDdWMb6tIaZcdTAwMGV6+IqgcrBLaiWMJrD3toRYO3h7cLetXHUwMDFiN2hNXHUwMDA0apkm1y3/ONZZX/bdgk7+PH2sVnPpwm31zVx1MDAxM/+CXHUwMDBijmPwsVx1MDAxY3HTy7dfgTFPW4d6xsC4UWDWeWNcdTAwMWX1bvz0XT719OPeXFxcdTAwMTWQJO+fUpF/XHUwMDEzwmJ2IJsshV+LXHUwMDFk9Cw9UFwitdhMR97ZhcRsXHUwMDA2ISuGxuZcdTAwMWGEXHUwMDAxqTh/fLlIxdJ9XHUwMDA2nfhJ8Ua7ZzV2vd3I2LtcZle2IFx1MDAwYkuBKVijn8f8a446XHUwMDEyuHFsXHUwMDBmbk2Jda9n8jqfXHUwMDAxXHUwMDA1W+SKUEQpXHUwMDA3XCK4XGY4+It6kCFLSXSBv+hbvYO+pZzYusBqjVx1MDAwZlBm/lM/6OLUjjpcdTAwMGat9/qUT5VCIahcdTAwMWEmrdhllD5t2IbPaiVcdTAwMWKX8Xchl1x1MDAwNjyomeZcdTAwMThMXHUwMDFiQ/RcdTAwMWFcdTAwMDVcdTAwMTTJg+/VxmkhJeDo8mfiIdvvXGY6XHUwMDE3kXc5kaJcdTAwMWP7XCJcbrB9R8CQSZeTXCK0mWZaSGG4IIRuJ1IkhKOGetRoQ22yZ1x1MDAxNr2zLqdcdTAwMDRjX/Hz9Vx1MDAwM0Oru5zx0/Ps53qck2fchMNcdTAwMTlcdTAwMWG2JVx1MDAxMIpGQVx1MDAwNVx1MDAxMYauXHUwMDExtp1vzEdcdTAwMWSMNttcIoiRknAmUImNR3nTpFx1MDAwMndcdTAwMWKqhotcdTAwMTeEmppZlLItaFx1MDAwYjBAnb+J7jXvT7wuXrc2IZfTide/XHUwMDE2jbs4nrFw3C2YrXMtgl2SaCHbMFx1MDAxNdrDwq5Tolx1MDAxY0331e32n5VB9Wc5oTt3/VpcIlx1MDAwM83mQ/+wXHUwMDEwebpR0vY4RFx1MDAxOZmbJVx1MDAxYdFcclx1MDAxYmaJgu/giVxclkgwrpVcbi75+lpkXHUwMDEzeVL4R6WgXHUwMDE2vDQh3CHQnFx1MDAxMlx1MDAwMmJccmf+4DZ//nSVPTrtJVx1MDAxZu/ybZPyjltHkXfmKbVlmFx1MDAxYdD7XHUwMDExiqhxnO/1+9LhQJRGZ8EmqHi4P/ChwJatK+HodXBtw7pcXM4hXHUwMDA1SVx1MDAxZM1sh1Yp8NlcdTAwMDCfkzlGzmDchHRcdTAwMThcdTAwMWaBb/+5cJVuXpRcdTAwMWLlRzZI+KnaXHUwMDE1gGtcdTAwMDK43WeV+JG5q6TjpPHQV730QbJ5dlx1MDAxNjzg8ORcIiu69WLn8Tye4lx1MDAwZvcx/ziffoP31lx1MDAxYvVNXGY2Q1x1MDAxY4ZCMC331ZZQbTE+TlCrMCGUIYwram9W8PvUmsFcdTAwMDLtX4JqxTCydNk0cWxcdTAwMDZU2Fx1MDAwMJhETSblRENcdTAwMWOuXHUwMDFjblx1MDAxN1x1MDAxNVx1MDAxOdtyXHUwMDAwXHUwMDA0W9pcdTAwMTCHOFx1MDAwNDRcdTAwMTVWglx1MDAwMcXc9iBcdTAwMGWOJ1D8jbbam0qCqnFpR1x1MDAxY+lcdTAwMTDDpMY5gMKvTF4sOuBoXHUwMDAyXHUwMDE4YtsgcyGXNr2gXG6JXHUwMDE3eYBcdTAwMTkhkVx1MDAxMic7XHUwMDEzXHTciVwip1CtS8NcdTAwMTRfeuckc4btKGy/c4VcdTAwMGZkcr05XHUwMDBlp6ldXk+RbzjuXFw2nFHDXHUwMDA15Vx1MDAxY9lcXFx1MDAxMiBsYjDpaFx1MDAxY4RcdTAwMGKNZE6ZWXqlXHUwMDAwwmFod1gqQtXJzORwXHUwMDFjnyqz2Scq0WVjy3t9XHUwMDAw4OVcdTAwMTjB7fumXGZwOf1QXHUwMDA10OHKS81cYp52+WivTZiIxGc3/OaEzNncl6HUXHUwMDE4245SXHUwMDFhtcrkjELZRbFnXHUwMDFh0Vx1MDAwMcHhmGM0Z3hDUVx1MDAxM6JvKpc+VztcdTAwMWNjyM9cdTAwMWOtbZh6XHUwMDEyXGI/0Fx1MDAwNuVNom1cdIiYXHUwMDE1rpZcdTAwMThcdTAwMDdFztrmXG5cdTAwMWRgTSY7duPNs12yqLGVmWgxMbZUUpiDckWIpszWU4jJXHQyRyu8XFwzbGJlXHJcXLlsPCv5aF5ZhSVccqBcdTAwMDM9MZ5wiFx1MDAxZFxmXHI5XHUwMDE0XHUwMDE5jlx1MDAwNy5FmXbQi6YorSDx0Woz2XeC481FikAhQlx1MDAwMOLDXyrLOFx1MDAwMcnty5842pJUSzF1+1DikFx1MDAxOEAhpFx1MDAwNWfLb1x1MDAxZj5ClFx1MDAxMzTLXHJcdTAwMTAuuF1uNv2IXHTVguHtQ3FcdTAwMTEo9ciMS3kvhMS/XHUwMDA1/1xys+y8Wq3SaM017sAu2Vxms+5s61x0tHjWMO76XHUwMDBmP3vl61i9LP0y3CdOio3DeuZrXHUwMDFid7Z3LXJcdTAwMGV6XGJEXGI28ZaDd9h2yP6ekfNsO+2gq4ZcdTAwMGWdTUqS4KrVoMPHbDpH2r6p0qrTaePOtvVcdTAwMDHGQlqvR9O2W+hZbtiIW4iS8JZRNDQoYqNcdTAwMDD4SNZY/f3j5dBr3Pjy+DLWPfVE2lxc52DTq78/N6tcdTAwMGZRqvlcdTAwMTlW439C7nLnXfz+fG71TWjg0oS/PsT6ykavUSWbr/j5n1xycvaUTF5cdTAwMWPHjm5vjlUn+mFLLVxiumZgO4sqY99cdTAwMGIxXHRSkFx1MDAwZcXNknNh1Yz5mFx1MDAxYVx1MDAwYkOpXHUwMDA0pFx1MDAwMjBSMEZcdTAwMTHs85Iks1x1MDAwNVx1MDAwN9ZcdTAwMTlCvUr+MGbRXHUwMDEwXHUwMDFhO1xu2684uM7t5dh/6rm233RL3mdHXHUwMDEwQ0+/zcpcdTAwMDJcdTAwMTZIVc5UXHUwMDE22Hy6gTXq487z2cdcdTAwMWJ99D1cdTAwMTVLNDPfhUek2zCRh6liwrFccoBcdTAwMTm1VZdcdTAwMDLmRVx1MDAxMu2bUDT6MISR7Vx1MDAxNLNTgcamJUVByfBcXHNe8zNbWoBcdTAwMDYwemiw9XrabenWd1x1MDAxNVx1MDAxN+RYXGI0t1RaXHUwMDEwPN8mXG5cdTAwMGLCo/omtJJcdTAwMWSEjUzItVJ9XHUwMDAzaMVTx4NO4oxcdTAwMTc71Vx1MDAxNoItryNv1lJUV69G61x1MDAxY8ePS0QqMfihNOpRfUrQXHUwMDFihIlmR/M9v8rpUfa007087ulbN1U96vx4ulx1MDAxZbujeEA8062cycHRdfmGt5NcdTAwMDeJXHUwMDFjvfbTwVx1MDAwM1x1MDAwZc6eTI99Pz9IpjuxRjL22ErddD8tqr+o7Fxin5P4wm3RdjH9XUx/XHUwMDE309/F9Ifj7WL6wfF2Mf01Y/qB5S7T4Vx1MDAxMIl45Os0eU66XHUwMDA3XFybhNu+62eT5uqsS9J+7oubdrbVuFx1MDAxNTdklMhcdTAwMDf1wa7csLBYVrFcdTAwMTEl2+7dteNrXHUwMDFicVx1MDAwYlFcdTAwMTJcdTAwMWHTXHUwMDE34S+tsWaDWKvxXFzipNZcdTAwMTKQucuR+9PqXHKnblxcp44jj1x1MDAxMFx1MDAxYtO3ffZcdTAwMTWfjemjnkWFyoXRuO9cdTAwMGbH9FFHMzSHtt+rauda2E80XHUwMDAy+lSHZqW5fSOwXudcdTAwMDW9d5Wid0jPqz+8ePe5nmf3z2mTjnykXHUwMDEwzSuHKNReXHUwMDE0/ShcdTAwMTN8XHUwMDE1y1CFKWHdLK1cdTAwMTHDW1xm6OM0rVx1MDAxMW/znNZHRDKYRexsRF+iS0JcdDN/sqmUkfzjfS9Wj+enfVx1MDAxZlx1MDAxZuJesuZ3XG5/LKq/ZFx1MDAxMtuM7XNcdTAwMTlcdTAwMWHbp+hcdTAwMWajn7VGe0i3lT9cdTAwMWHIx/JcdTAwMGJcXD4/lfqN854oxVwiXHUwMDBmWFx1MDAxYtpcdTAwMTfGXGKUvzmh/WE4XHUwMDExiKJSyG2G9m1vZ2PjJZpKwJ9z1vzOebGIwVx1MDAxM5I//FpcdTAwMDODnmmA1bdcdTAwMWTZT+dC4LmlyH7wfGtF9r/91r77bqORa+M923+Lne53K95LYo50XHUwMDE0h1x1MDAxZmu5XHUwMDBmcWxcdTAwMTHjXHJDrr++/fo/VaGJeiJ9ZeroMQ PUB SUB SUB SUB Producer Consumer Kafka Azure EventHubs AMQP Producer Consumer AWS S3 Storage S3 Google Cloud Storage GS
This fictive data fabric above consists of a heterogeneous set of technologies,
interconnected by pipelines. You can also turn any pipeline into an API using
the serve
sink, effectively creating a dataflow
microservice that you can access with a HTTP client from the other side:
eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1Z2VLbSFx1MDAxNH3nKyjPKyi9L3mzg1x0TFx1MDAxMsJiXHUwMDA3yEyKXHUwMDEyUtvWIEtCkllC8e/TkrG1WF5cdTAwMDA7eGpcIqqwfbvVfVt9z7nntlx1MDAxZTY2N2vxfaBq7zdr6s4yXcdcdTAwMGXN29pWYr9RYeT4nm5C6e/IXHUwMDFmhFbas1x1MDAxN8dB9P7dOzNcYozsLsPy+8M7lav6yosj3fcv/Xtz8yH9n5vLdTyV9k2t2Uyc47L1wPfSWVx1MDAwNSOAU4nG7U60oyeKla1cdTAwMWI7plx1MDAxYqmsJTHVXHUwMDA2Le9cZvxcdTAwMTR++1x1MDAxONGdI/aPbym0nU3acVxc9yS+d4crMq3eIMy5XHUwMDE0xaF/pU5cdTAwMWQ77ul2WLKP77P9OHFg3Fx1MDAxY/qDbs9TUVS4yVx1MDAwZkzLie9cdTAwMTNcdTAwMWJcdTAwMDBjq+l100Eyy13Sg1x1MDAxMINcdTAwMTCKIIKUcyhotuBkXHUwMDAwLLkhucBcdTAwMDRIRCBcdTAwMTKs5NlcdTAwMDff9cPEsz9AemWuXZrWVVf759lZXHUwMDFmS9nENrM+t0/rXHUwMDE1mU895XR7sbaRzFx1MDAxNqn0oUNcdTAwMGWpnlx1MDAwMuV6J1x1MDAxM1x1MDAwNPt2uvM/skdcdTAwMWSafbWfbsqX+v3R52BcdTAwMGZ8jT5f9FutRvfs3DwtPD/Pfnp+3sB1M++ThmYurrLRXHUwMDA3gW1cdTAwMGWjXHUwMDAwMsk4Z5hcdTAwMTBcdTAwMDKyx6Zj7ao8nOtbV1x1MDAxNYFcdTAwMTPFZlx1MDAxODdcdTAwMWPPdrxu+Vx1MDAxNuXZU1pcXDOKP/j9vpPEwqHveHG5RzpuPVxm/dueMu2Kkae2XHUwMDA1yXBcdTAwMTmQkiv7tpnFTvpj/P3H1vzeZG539sz+otBcdTAwMWZcdTAwMDFcdTAwMDPkL/i86bBBKeJcdTAwMTAzLlx1MDAwNFx1MDAwMFx1MDAxNEC1XHLps1x1MDAxNpjzdyP/+bj1PE5cdTAwMTJcdTAwMDSWrSNOoowzJFx1MDAwMcxQOI+U0D78eL673zm4XHUwMDBlLtvnN1x1MDAwN0wpTNaelFx1MDAxMPrPkFx1MDAxMlx1MDAxMZqQmMSZXHUwMDBmvzlpnTlcdJVI4zeHvYbDzGTPqkhcZjNWto5IXGbp6GSMXHUwMDAysjCJtYN63Sd+s3ta/354ctz7elx1MDAxMXXgkkks8rWqXFwmh2EhXHIqXHUwMDAxkprDJEOIXHUwMDE2KIzARSlMXHUwMDAxXGYxnE1hSipLdSYpjFx1MDAxMkMgwjRcdTAwMTVcdTAwMDBBXHUwMDA1Y3KS0SZcdI0xrXuBXFxccqE9jFx1MDAwM2xcdTAwMTRD6Mny+LY8l3PsqZxcdTAwMTiurS+vd759+fo9wFx1MDAxNyfRWVx1MDAwZtw1wXazlmGm1vGtQVx1MDAxYSV6tzlcdTAwMTZcYlx1MDAwMoSRwFx1MDAwMPJcXKeuXHUwMDE5pFrbkJhojFIqkH7IZHLtv4xhk6ydbdFSKXZq1JXuXohhYnVcdTAwMTdXXHUwMDExXGbCtGxcdTAwMWRcdTAwMTFcZoZcdTAwMTJIjIBYmGBmb/K6XHUwMDEyjFx1MDAxNFx1MDAwNlx1MDAxNIBr+uBaKUlcXGRcdTAwMThMsVx1MDAwMVxi1qlcdTAwMDAzXcZCQEueLYliqIG4lEwgpuszwbNZxlx1MDAxNEMnKzmCkFx1MDAwNlxiXCJvUcmNXHUwMDAz8CFcdTAwMTeWXHUwMDBiZZpCYFx1MDAwZVPfuOVxXHUwMDE0zavgqo7vxSfOz5QuQcG6a/ZcdTAwMWT3vlx1MDAxMEMpYrSDx82T1t9e/XC/Vmiqu043XHUwMDAxUM3SXHUwMDBmRIVcdTAwMDVsxY5luuNcdTAwMGWxXHUwMDFmZK2WnszUXHUwMDE1S7g/wSx+6HRcdTAwMWTPdFvTJ05qnb1RPEAjl1xmL81IpZWQzjz4ZVqD5J5JiVxuIJSUQinh4sc4e4Houl43bFx1MDAxZLTOdi122LTuflx1MDAxZa07XHUwMDE3XHUwMDEwUSqYXig2oEr+XsZcdTAwMDR8XHUwMDExdVx1MDAwMaXOfFx1MDAwMkiRqb//tby43v10Jzq++Vx0nV5cdTAwMWbef1x1MDAxYjSvjm/2quTFNjI0wzLN9kBoamdaPEzqXHUwMDBianCu95hhSjQomJgtL6b51Du6aKCdz1x1MDAxMT6KrY9A4bO9xpeTKp/ApFx1MDAwN1x1MDAxMzO+QLbU4tBcdTAwMTmG+a8vXHUwMDBm+avESqisuOR5RlOQT1UskLNkW/Oie1x1MDAxZU3N3qQ1pSnKZtFcdTAwMTSmy6Spacc6kFWc60A0yVRcdTAwMDAwrqHEVqNRJplcbs9nqlnSZXbeKoRpWbpsVY9bKcFzM4JW0/TO/jyXjZvm8T+dxqe23b9YrVwimom+aaVcdTAwMDLMZaZcdH1cdTAwMDCgRCB/fDdcdTAwMGZ41atec+AxJFxmgChCXHUwMDFhWZwyhFx1MDAwYsAjgFx1MDAxYWTl+lx1MDAwMCNDYF0pJLUvhqiiUMjZxiDkiDKd9VYjXHUwMDE33uB49UVSvlx1MDAxZVx1MDAwNC9cdTAwMTXxfce28/moqOPnpZGytC84spCoh+JFmMWIl61jzEpcbijQNefimn62ylpTzFx1MDAxMslccoSYgJBcdTAwMDMkOMwgkGJcdTAwMTZjg1x1MDAxM631OOKC6i+85NhyQEuZoTEridBcdTAwMTlSO1x1MDAwMis0flx1MDAwNWpcdTAwMTFcIlxmQvomqF1RjlxcQTJ7XHUwMDFkJ+y1Woe/urIvzrlcZvxPe1x0XG5cdTAwMDGaqpZcdTAwMDWhXHUwMDFhXHUwMDExlC1+vvftOti5bodn8HLnY68tdm5C9qG97vjHgFx1MDAxYkBjmzFINf55ttzhO1BpXGIkiYYkQZhL/jr8v+4lqHZCXHUwMDEwXHUwMDA23uI07/c70ORaq3eg4lX9n+fNcyv0NFx1MDAwNKtcYochUraO+IYgXCKI0EBcXJhv5kT3evJcckpTPSOMXHUwMDEywVx1MDAxMNKiokg4hFx1MDAxOURqXHLAsNZcdTAwMWRcdTAwMWO+qkiIQ9OLXHUwMDAyM9QoruKcqlxunVx1MDAwMENottPETyjVXub47kl1QKiLXHUwMDFizHN5YVx1MDAxZVxyXHUwMDE1ILYszoG5XHUwMDE3Mc/gXHUwMDFjL1x0zGHXYVx1MDAwNG88IaBmXHUwMDA2wUmsp6mNTlxyajeOum1UsHgnvVx1MDAxMtWSxn9cdTAwMTJoKj1seNx4/Fx1MDAxN4m24lx0In0=REST API App HTTP
Because you have full control over the location where you run the pipeline, you
can push it all the way to the "last mile." This helps especially when there
are compliance and data residency concerns that must be properly addressed.