{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "# The Fourier Transform\n", "\n", "*This Jupyter notebook is part of a [collection of notebooks](../index.ipynb) in the bachelors module Signals and Systems, Communications Engineering, Universität Rostock. Please direct questions and suggestions to [Sascha.Spors@uni-rostock.de](mailto:Sascha.Spors@uni-rostock.de).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Theorems\n", "\n", "The theorems of the Fourier transform relate basic time-domain operations to their equivalents in the Fourier domain. They are of use for the computation of Fourier transforms of signals composed from modified [standard signals](../continuous_signals/standard_signals.ipynb) and for the computation of the response of systems to an input signal. The theorems allow further to predict the consequences of modifying a signal or system by certain operations." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Temporal Scaling Theorem\n", "\n", "A signal $x(t)$ for which the Fourier transform $X(j \\omega) = \\mathcal{F} \\{ x(t) \\}$ is existing and known is given. The Fourier transform of the [temporally scaled signal](../continuous_signals/operations.ipynb#Temporal-Scaling) $x(a t)$ with $a \\in \\mathbb{R} \\setminus \\{0\\}$ reads\n", "\n", "\$$\n", "\\mathcal{F} \\{ x(a t) \\} = \\frac{1}{|a|} \\cdot X \\left( \\frac{j \\omega}{a} \\right)\n", "\$$\n", "\n", "The Fourier transformation of a temporally scaled signal is given by inverse scaling of the Fourier transform of the unscaled signal and weighting with $\\frac{1}{|a|}$. This relation is known as scaling theorem of the Fourier transform. It can be proven by introducing the scaled signal $x(a t)$ into the definition of the Fourier transformation together with the substitution $t' = a t$. For $a>0$ this reads\n", "\n", "\$$\n", "\\begin{split}\n", "\\mathcal{F} \\{ x(a t) \\} &= \\int_{-\\infty}^{\\infty} x(a t) e^{-j \\omega t} dt \\\\\n", "&= \\frac{1}{a} \\int_{-\\infty}^{\\infty} x(t') e^{-j \\frac{\\omega}{a} t'} dt' \\\\\n", "&= \\frac{1}{a} X \\left( \\frac{\\omega}{a} \\right)\n", "\\end{split}\n", "\$$\n", "\n", "\n", "\n", "Note that the cases $a<0$ and $a>0$ have to be regarded separately." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Example**\n", "\n", "According to the scaling theorem and the [Fourier transform of the rectangular signal](definition.ipynb#Transformation-of-the-Rectangular-Signal) $\\mathcal{F} \\{ \\text{rect}(t) \\} = \\text{sinc} \\left( \\frac{\\omega}{2} \\right)$, the transform of the scaled rectangular signal $\\text{rect}(a t)$ is given as\n", "\n", "\$$\n", "\\mathcal{F} \\{ \\text{rect}(a t) \\} = \\frac{1}{|a|} \\cdot \\text{sinc} \\left( \\frac{\\omega}{2 a} \\right)\n", "\$$\n", "\n", "This can be confirmed by explicitly calculating the Fourier transformation of $\\text{rect}(a t)$" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{2 \\sin{\\left(\\frac{\\omega}{2 a} \\right)}}{\\omega}$" ], "text/plain": [ " ⎛ ω ⎞\n", "2⋅sin⎜───⎟\n", " ⎝2⋅a⎠\n", "──────────\n", " ω " ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "\n", "def fourier_transform(x):\n", " return sym.integrals.transforms._fourier_transform(x, t, w, 1, -1, 'Fourier')\n", "\n", "\n", "t, w = sym.symbols('t omega')\n", "a = sym.symbols('a', positive=True)\n", "\n", "x = sym.Heaviside(t + sym.S.Half/a) - sym.Heaviside(t - sym.S.Half/a)\n", "X = fourier_transform(x)\n", "X" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For illustration both the signal $x(t)$ and its Fourier transform $X(j \\omega)$ are plotted for a specific value of $a$" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/pdf": "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MCBSCi9FbmNvZGluZyA8PCAvRGlmZmVyZW5jZXMgWyA5NyAvYSAxMTYgL3QgXSAvVHlwZSAvRW5jb2RpbmcgPj4gL0ZpcnN0Q2hhciAwCi9Gb250QkJveCBbIC0xMDE2IC0zNTEgMTY2MCAxMDY4IF0gL0ZvbnREZXNjcmlwdG9yIDEzIDAgUgovRm9udE1hdHJpeCBbIDAuMDAxIDAgMCAwLjAwMSAwIDAgXSAvTGFzdENoYXIgMjU1IC9OYW1lIC9EZWphVnVTYW5zLU9ibGlxdWUKL1N1YnR5cGUgL1R5cGUzIC9UeXBlIC9Gb250IC9XaWR0aHMgMTIgMCBSID4+CmVuZG9iagoxMyAwIG9iago8PCAvQXNjZW50IDkyOSAvQ2FwSGVpZ2h0IDAgL0Rlc2NlbnQgLTIzNiAvRmxhZ3MgOTYKL0ZvbnRCQm94IFsgLTEwMTYgLTM1MSAxNjYwIDEwNjggXSAvRm9udE5hbWUgL0RlamFWdVNhbnMtT2JsaXF1ZQovSXRhbGljQW5nbGUgMCAvTWF4V2lkdGggMTM1MCAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTIgMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM1MCA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDI4IDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxNyA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjE3IDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDgKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk5NSA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMTUgMCBvYmoKPDwgL2EgMTYgMCBSIC90IDE3IDAgUiA+PgplbmRvYmoKMjIgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyMzAgPj4Kc3RyZWFtCnicNVFJbsMwDLzrFfOBAOIuv8dBT+3/rx3SCWBgaEuczREbGxF4icHPQeTGW9aMmvibyV3xuzwVHgm3gidRBF6Ge9kJLm8Yl/04zHzwXlo5kxpPMiAX2fTwRMhgl0DowOwa1GGbaSf6hoTPjkg1G1lOX0vQS6sQKE/ZfqcLSrSt6s/tsy607WtPONntqSeVTyCeW7ICl41XTBZjGfRE5S7F9EGqs4WehPKifA6y+aghEl2inIEnBgejQDuw57afiVeFoHV1n7aNoRopHU//NjQ1SSLkEyWc2dK4W/j+nnv9/AOmVFOfCmVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAyNDUgPj4Kc3RyZWFtCnicRVC7jUMxDOs9BRcIYP0se553SJXbvz1KRnCFIVo/kloSmIjASwyxlG/iR0ZBPQu/F4XiM8TPF4VBzoSkQJz1GRCZeIbaRm7odnDOvMMzjDkCF8VacKbTmfZc2OScBycQzm2U8YxCuklUFXFUn3FM8aqyz43XgaW1bLPTkewhjYRLSSUml35TKv+0KVsq6NpFE7BI5IGTTTThLD9DkmLMoJRR9zC1jvRxspFHddDJ2Zw5LZnZ7qftTHwPWCaZUeUpnecyPiep81xOfe6zHdHkoqVV+5z93pGW8iK126HV6VclUZmN1aeQuDz/jJ/x/gOOoFk+CmVuZHN0cmVhbQplbmRvYmoKMjQgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAzOTIgPj4Kc3RyZWFtCnicPVJLbgUxCNvPKbhApfBNcp6p3u7df1ubzFSqCi8DtjGUlwypJT/qkogzTH71cl3iUfK9bGpn5iHuLjam+FhyX7qG2HLRmmKxTxzJL8i0VFihVt2jQ/GFKBMPAC3ggQXhvhz/8ReowdewhXLDe2QCYErUbkDGQ9EZSFlBEWH7kRXopFCvbOHvKCBX1KyFoXRiiA2WACm+qw2JmKjZoIeElZKqHdLxjKTwW8FdiWFQW1vbBHhm0BDZ3pGNETPt0RlxWRFrPz3po1EytVEZD01nfPHdMlLz0RXopNLI3cpDZ89CJ2Ak5kmY53Aj4Z7bQQsx9HGvlk9s95gpVpHwBTvKAQO9/d6Sjc974CyMXNvsTCfw0WmnHBOtvh5i/YM/bEubXMcrh0UUqLwoCH7XQRNxfFjF92SjRHe0AdYjE9VoJRAMEsLO7TDyeMZ52d4VtOb0RGijRB7UjhE9KLLF5ZwVsKf8rM2xHJ4PJntvtI+UzMyohBXUdnqots9jHdR3nvv6/AEuAKEZCmVuZHN0cmVhbQplbmRvYmoKMjUgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCA5MCA+PgpzdHJlYW0KeJxNjUESwCAIA++8Ik9QRND/dHrS/1+r1A69wE4CiRZFgvQ1aksw7rgyFWtQKZiUl8BVMFwL2u6iyv4ySUydhtN7twODsvFxg9JJ+/ZxegCr/XoG3Q/SHCJYCmVuZHN0cmVhbQplbmRvYmoKMjYgMCBvYmoKPDwgL0JCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMzcKL1N1YnR5cGUgL0Zvcm0gL1R5cGUgL1hPYmplY3QgPj4Kc3RyZWFtCnic4zI0MFMwNjVVyOUyNzYCs3LALCNzIyALJItgQWTTAAFfCgoKZW5kc3RyZWFtCmVuZG9iagoyNyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDgwID4+CnN0cmVhbQp4nEWMuw3AMAhEe6ZgBH4mZp8olbN/GyBK3HBPunu4OhIyU95hhocEngwshlPxBpmjYDW4RlKNneyjsG5fdYHmelOr9fcHKk92dnE9zcsZ9AplbmRzdHJlYW0KZW5kb2JqCjI4IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGggMTQ3ID4+CnN0cmVhbQp4nD1PuQ0DMQzrPQUXOMB6LFvzXJDqsn8bykZSCCJA8ZFlR8cKXGICk445Ei9pP/hpGoFYBjVH9ISKYVjgbpICD4MsSleeLV4MkdpCXUj41hDerUxkojyvETtwJxejBz5UG1keekA7RBVZrknDWNVWXWqdsAIcss7CdT3MqgTl0SdrKR9QVEK9dP+fe9r7CwBvL+sKZW5kc3RyZWFtCmVuZG9iagoyOSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDE0OSA+PgpzdHJlYW0KeJw1j0sOAyEMQ/c5hS8wUn6EcB6qrqb33zZhWgkJC9svwRaDkYxLTGDsmGPhJVRPrT4kI4+6STkQqVA3BE9oTAwzbNIl8Mp03zKeW7ycVuqCTkjk6aw2GqKMZl7D0VPOCpv+y9wkamVGmQMy61S3E7KyYAXmBbU89zPuqFzohIedyrDoTjGi3GZGGn7/2/T+AnsyMGMKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDQ5ID4+CnN0cmVhbQp4nDM2tFAwUDA0MAeSRoZAlpGJQoohF0gAxMzlggnmgFkGQBqiOAeuJocrDQDG6A0mCmVuZHN0cmVhbQplbmRvYmoKMzEgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aCAxNTcgPj4Kc3RyZWFtCnicRZC5EUMxCERzVUEJErAI6rHH0Xf/qRf5SrRvAC2HryVTqh8nIqbc12j0MHkOn00lVizYJraTGnIbFkFKMZh4TjGro7ehmYfU67ioqrh1ZpXTacvKxX/zaFczkz3CNeon8E3o+J88tKnoW6CvC5R9QLU4nUlQMX2vYoGjnHZ/IpwY4D4ZR5kpI3Fibgrs9xkAZr5XuMbjBd0BN3kKZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDMxNyA+PgpzdHJlYW0KeJw1UktyQzEI279TcIHOmL99nnSyau6/rYQnK7AtQEIuL1nSS37UJdulw+RXH/clsUI+j+2azFLF9xazFM8tr0fPEbctCgRREz34MicVItTP1Og6eGGXPgOvEE4pFngHkwAGr+FfeJROg8A7GzLeEZORGhAkwZpLi01IlD1J/Cvl9aSVNHR+Jitz+XtyqRRqo8kIFSBYudgHpCspHiQTPYlIsnK9N1aI3pBXksdnJSYZEN0msU20wOPclbSEmZhCBeZYgNV0s7r6HExY47CE8SphFtWDTZ41qYRmtI5jZMN498JMiYWGwxJQm32VCaqXj9PcCSOmR0127cKyWzbvIUSj+TMslMHHKCQBh05jJArSsIARgTm9sIq95gs5FsCIZZ2aLAxtaCW7eo6FwNCcs6Vhxtee1/P+B0Vbe6MKZW5kc3RyZWFtCmVuZG9iagozMyAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDEzMSA+PgpzdHJlYW0KeJxFj8sNBCEMQ+9U4RLyGT6ph9We2P6v6zCaQUL4QSI78TAIrPPyNtDF8NGiwzf+NtWrY5UsH7p6UlYP6ZCHvPIVUGkwUcSFWUwdQ2HOmMrIljK3G+G2TYOsbJVUrYN2PAYPtqdlqwh+qW1h6izxDMJVXrjHDT+QS613vVW+f0JTMJcKZW5kc3RyZWFtCmVuZG9iagozNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDI0OCA+PgpzdHJlYW0KeJwtUTmSA0EIy+cVekJz0++xy5H3/+kKygGDhkMgOi1xUMZPEJYr3vLIVbTh75kYwXfBod/KdRsWORAVSNIYVE2oXbwevQd2HGYC86Q1LIMZ6wM/Ywo3enF4TMbZ7XUZNQR712tPZlAyKxdxycQFU3XYyJnDT6aMC+1czw3IuRHWZRikm5XGjIQjTSFSSKHqJqkzQZAEo6tRo40cxX7pyyOdYVUjagz7XEvb13MTzho0OxarPDmlR1ecy8nFCysH/bzNwEVUGqs8EBJwv9tD/Zzs5Dfe0rmzxfT4XnOyvDAVWPHmtRuQTbX4Ny/i+D3j6/n8A6ilWxYKZW5kc3RyZWFtCmVuZG9iagozNSAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIxMCA+PgpzdHJlYW0KeJw1UMsNQzEIu2cKFqgUAoFknla9df9rbdA7YRH/QljIlAh5qcnOKelLPjpMD7Yuv7EiC611JezKmiCeK++hmbKx0djiYHAaJl6AFjdg6GmNGjV04YKmLpVCgcUl8Jl8dXvovk8ZeGoZcnYEEUPJYAlquhZNWLQ8n5BOAeL/fsPuLeShkvPKnhv5G5zt8DuzbuEnanYi0XIVMtSzNMcYCBNFHjx5RaZw4rPWd9U0EtRmC06WAa5OP4wOAGAiXlmA7K5EOUvSjqWfb7zH9w9AAFO0CmVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwgL0Jhc2VGb250IC9EZWphVnVTYW5zIC9DaGFyUHJvY3MgMjEgMCBSCi9FbmNvZGluZyA8PAovRGlmZmVyZW5jZXMgWyA0MCAvcGFyZW5sZWZ0IC9wYXJlbnJpZ2h0IDQ2IC9wZXJpb2QgNDggL3plcm8gL29uZSAvdHdvIDUyIC9mb3VyIDU0IC9zaXgKNTYgL2VpZ2h0IDk5IC9jIDEwMSAvZSAxMTQgL3IgMTE2IC90IF0KL1R5cGUgL0VuY29kaW5nID4+Ci9GaXJzdENoYXIgMCAvRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250RGVzY3JpcHRvciAxOSAwIFIKL0ZvbnRNYXRyaXggWyAwLjAwMSAwIDAgMC4wMDEgMCAwIF0gL0xhc3RDaGFyIDI1NSAvTmFtZSAvRGVqYVZ1U2FucwovU3VidHlwZSAvVHlwZTMgL1R5cGUgL0ZvbnQgL1dpZHRocyAxOCAwIFIgPj4KZW5kb2JqCjE5IDAgb2JqCjw8IC9Bc2NlbnQgOTI5IC9DYXBIZWlnaHQgMCAvRGVzY2VudCAtMjM2IC9GbGFncyAzMgovRm9udEJCb3ggWyAtMTAyMSAtNDYzIDE3OTQgMTIzMyBdIC9Gb250TmFtZSAvRGVqYVZ1U2FucyAvSXRhbGljQW5nbGUgMAovTWF4V2lkdGggMTM0MiAvU3RlbVYgMCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL1hIZWlnaHQgMCA+PgplbmRvYmoKMTggMCBvYmoKWyA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDMxOCA0MDEgNDYwIDgzOCA2MzYKOTUwIDc4MCAyNzUgMzkwIDM5MCA1MDAgODM4IDMxOCAzNjEgMzE4IDMzNyA2MzYgNjM2IDYzNiA2MzYgNjM2IDYzNiA2MzYgNjM2CjYzNiA2MzYgMzM3IDMzNyA4MzggODM4IDgzOCA1MzEgMTAwMCA2ODQgNjg2IDY5OCA3NzAgNjMyIDU3NSA3NzUgNzUyIDI5NQoyOTUgNjU2IDU1NyA4NjMgNzQ4IDc4NyA2MDMgNzg3IDY5NSA2MzUgNjExIDczMiA2ODQgOTg5IDY4NSA2MTEgNjg1IDM5MCAzMzcKMzkwIDgzOCA1MDAgNTAwIDYxMyA2MzUgNTUwIDYzNSA2MTUgMzUyIDYzNSA2MzQgMjc4IDI3OCA1NzkgMjc4IDk3NCA2MzQgNjEyCjYzNSA2MzUgNDExIDUyMSAzOTIgNjM0IDU5MiA4MTggNTkyIDU5MiA1MjUgNjM2IDMzNyA2MzYgODM4IDYwMCA2MzYgNjAwIDMxOAozNTIgNTE4IDEwMDAgNTAwIDUwMCA1MDAgMTM0MiA2MzUgNDAwIDEwNzAgNjAwIDY4NSA2MDAgNjAwIDMxOCAzMTggNTE4IDUxOAo1OTAgNTAwIDEwMDAgNTAwIDEwMDAgNTIxIDQwMCAxMDIzIDYwMCA1MjUgNjExIDMxOCA0MDEgNjM2IDYzNiA2MzYgNjM2IDMzNwo1MDAgNTAwIDEwMDAgNDcxIDYxMiA4MzggMzYxIDEwMDAgNTAwIDUwMCA4MzggNDAxIDQwMSA1MDAgNjM2IDYzNiAzMTggNTAwCjQwMSA0NzEgNjEyIDk2OSA5NjkgOTY5IDUzMSA2ODQgNjg0IDY4NCA2ODQgNjg0IDY4NCA5NzQgNjk4IDYzMiA2MzIgNjMyIDYzMgoyOTUgMjk1IDI5NSAyOTUgNzc1IDc0OCA3ODcgNzg3IDc4NyA3ODcgNzg3IDgzOCA3ODcgNzMyIDczMiA3MzIgNzMyIDYxMSA2MDUKNjMwIDYxMyA2MTMgNjEzIDYxMyA2MTMgNjEzIDk4MiA1NTAgNjE1IDYxNSA2MTUgNjE1IDI3OCAyNzggMjc4IDI3OCA2MTIgNjM0CjYxMiA2MTIgNjEyIDYxMiA2MTIgODM4IDYxMiA2MzQgNjM0IDYzNCA2MzQgNTkyIDYzNSA1OTIgXQplbmRvYmoKMjEgMCBvYmoKPDwgL2MgMjIgMCBSIC9lIDIzIDAgUiAvZWlnaHQgMjQgMCBSIC9mb3VyIDI1IDAgUiAvb25lIDI3IDAgUgovcGFyZW5sZWZ0IDI4IDAgUiAvcGFyZW5yaWdodCAyOSAwIFIgL3BlcmlvZCAzMCAwIFIgL3IgMzEgMCBSIC9zaXggMzIgMCBSCi90IDMzIDAgUiAvdHdvIDM0IDAgUiAvemVybyAzNSAwIFIgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0YxIDIwIDAgUiAvRjIgMTQgMCBSID4+CmVuZG9iago0IDAgb2JqCjw8IC9BMSA8PCAvQ0EgMCAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+Ci9BMiA8PCAvQ0EgMSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+ID4+CmVuZG9iago1IDAgb2JqCjw8ID4+CmVuZG9iago2IDAgb2JqCjw8ID4+CmVuZG9iago3IDAgb2JqCjw8IC9GMS1EZWphVnVTYW5zLW1pbnVzIDI2IDAgUiA+PgplbmRvYmoKMiAwIG9iago8PCAvQ291bnQgMSAvS2lkcyBbIDEwIDAgUiBdIC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKMzYgMCBvYmoKPDwgL0NyZWF0aW9uRGF0ZSAoRDoyMDIxMDQzMDExMjY0MSswMicwMCcpCi9DcmVhdG9yIChNYXRwbG90bGliIHYzLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZykKL1Byb2R1Y2VyIChNYXRwbG90bGliIHBkZiBiYWNrZW5kIHYzLjMuNCkgPj4KZW5kb2JqCnhyZWYKMCAzNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTYgMDAwMDAgbiAKMDAwMDAwOTkwOSAwMDAwMCBuIAowMDAwMDA5Njc2IDAwMDAwIG4gCjAwMDAwMDk3MTkgMDAwMDAgbiAKMDAwMDAwOTgxOCAwMDAwMCBuIAowMDAwMDA5ODM5IDAwMDAwIG4gCjAwMDAwMDk4NjAgMDAwMDAgbiAKMDAwMDAwMDA2NSAwMDAwMCBuIAowMDAwMDAwMzk1IDAwMDAwIG4gCjAwMDAwMDAyMDggMDAwMDAgbiAKMDAwMDAwMTk1MCAwMDAwMCBuIAowMDAwMDAzMTc0IDAwMDAwIG4gCjAwMDAwMDI5NjYgMDAwMDAgbiAKMDAwMDAwMjY0NCAwMDAwMCBuIAowMDAwMDA0MjI3IDAwMDAwIG4gCjAwMDAwMDE5NzEgMDAwMDAgbiAKMDAwMDAwMjM5MyAwMDAwMCBuIAowMDAwMDA4NDMzIDAwMDAwIG4gCjAwMDAwMDgyMzMgMDAwMDAgbiAKMDAwMDAwNzgzMCAwMDAwMCBuIAowMDAwMDA5NDg2IDAwMDAwIG4gCjAwMDAwMDQyNjkgMDAwMDAgbiAKMDAwMDAwNDU3MiAwMDAwMCBuIAowMDAwMDA0ODkwIDAwMDAwIG4gCjAwMDAwMDUzNTUgMDAwMDAgbiAKMDAwMDAwNTUxNyAwMDAwMCBuIAowMDAwMDA1Njg3IDAwMDAwIG4gCjAwMDAwMDU4MzkgMDAwMDAgbiAKMDAwMDAwNjA1OSAwMDAwMCBuIAowMDAwMDA2MjgxIDAwMDAwIG4gCjAwMDAwMDY0MDIgMDAwMDAgbiAKMDAwMDAwNjYzMiAwMDAwMCBuIAowMDAwMDA3MDIyIDAwMDAwIG4gCjAwMDAwMDcyMjYgMDAwMDAgbiAKMDAwMDAwNzU0NyAwMDAwMCBuIAowMDAwMDA5OTY5IDAwMDAwIG4gCnRyYWlsZXIKPDwgL0luZm8gMzYgMCBSIC9Sb290IDEgMCBSIC9TaXplIDM3ID4+CnN0YXJ0eHJlZgoxMDEyNgolJUVPRgo=\n", "image/svg+xml": [ "\n", "\n", "\n", "\n" ], "text/plain": [ "