# SMC 调用

安全监视调用 (SMC) 用于向 Linux 客户端公开在 Qualcomm TEE 中实现的服务和接口。它向 Qualcomm TEE 提供有关请求进程的标识信息。

SMC 调用是一种面向对象、基于能力的框架，它使得 Linux 客户端、TrustZone 以及使用迷你内核 (MINK) 调用对象的 TrustZone 应用程序之间能够进行通信。

在 SMC 调用过程中，涉及以下对象：

表：对象 – SMC 调用

| 对象 | 所有者的执行环境 | 说明 |
| --- | --- | --- |
| Remote | TrustZone | Linux 通过调用操作获取对远程对象的引用。例如，AppLoader，它是一个远程对象。 |
| Callback | Linux | Linux 通过调用操作将所需回调对象的引用发送到 TrustZone，TrustZone 可以根据需要调用这些对象。 |
| Memory | Linux | 这些内存对象对于在 TrustZone 和 Linux 之间有效共享大型缓存非常有用。 |

下图显示了 SMC 调用体系结构：

![../../_images/smcinvoke-fig1.jpg](data:image/jpeg;base64,UklGRgRuAABXRUJQVlA4TPhtAAAv9kGFAI04bNtGkka+/zT9N7yTyd5TQET/J4A/mAkhs5cqiwDXrC+dpEDnRFscPOzvmLA5qzphfBWzuG44QsYY4z3u7/Ee62yk0kxiaKjikf2qrUUtkI/ERuiFhFhs2snBrM9byuWMMy+FwDnf6CJATlonJGDPVC6uXhJy9Uq4XNJDwCiKJBus2q0PKviR77QZy2xMUCOACgha/fOJoraRHPNHeRCOw16v3wFRyEiS1P50i1D3ABzBpf8TQBfEMH5lfUz7T4AIU5J4s4hARFAferIhItRHFDtaA0DdqABhZ037ahS9GEcWMOPEamHktm0k2fn/q6dxMts9IiaAP5TUVRxQtLXerVe+w92DuqVUBTULq5/Zh6HbGnehJEVpMy0WlYVKO+WEWzGgy7AD0K0XapfH+uLFCSPSU93lI6knt9p3PdHYNkKSED4+6cvxSv+/3JaU/169qmuF4zPh4IQdnhB36RCH8IQn7PCEHeLuesIdUR3inHBnuNv4tBW1qmvNu4NzTu8+r/zP+2L7UxCRNnlHWOreEQ6RHaKhFu7QRbaqJp6bQDs8RNQm043DHax8d4wtbNepvgTkn00R67oAusNdRTRVG486InR3uIOm451RG3d7cTYOfdCF+wmxdyTDtWvhciKuwYnH58Q9KbUvAHfNCKmFn7vAnVBfNKRqR7jrFTDZ/HG4g72xlGwkRe5A3646GRK+6YQbtyZzh5NDPBIhO6bGZ9cbEWnksJL3JrroZtskSYrejA76CbFFzMEURCSeMQURsU3ABAwYAxCPPcV7N54hOpOqtn+OZOXr3/xPP39xQh1iyZItR7YkM/JcAhLJJeQgkVzCkcgjyYxcuZJMk4v8Z/hTHROgd/7/ZbKt6qldXdQTII13gDQ+eOMdTjj44IMPvsIJB5/gyATI4BNOOHiHE3bY4YQddthh408whc9eiyMzrIgPELq7u/sq3N01pMp1EQzO4Dq4u8OmjvSJqMFl6qnC3d2ZjbvzVLMyyvWLW6iD+87w6DR/gKa+I2QXmdsu3N02ZAuqJoJ1kGh3DQ47OlW4d1Xj7lMPLhPhR0Lc3d2OhBPh7g6ZruoMzdxiIvf1i0+EE7mcCI921lWrcEvXk+N63d3vPTpzXXetm0x6s7sCZIK+7n5vp0h6/e7q4Hfd1sme+kVEmt1Mf/cf8NtFh/r/NL/y438yZLiS4QLFOyAZkOAdkOLFi3dAOiDFi3csHrx48eLBMxbvWDx48eDFM7yH8zuc3BeqsW3L1pZZ33/qryX+ZtFv+eQvCaENBEkIhEAQbQjIXxLGJ688gmaJK1bBKYgJ0Dz//3JJlvLcG7l4FshZJp544gfPZeIHTzzxXCaeeOKJn2UuD574WebyLHOZ+FncO5OLkcQTz8XIWWSMW/ed6qjefXC3u8dHV14x7t6Fy/hM4XIlDtoUrg+ycppZ4jxoxcHlzjPEeKF31uhzV/ho88QZvGLcvqzcdbQayajB7rg++MrdOm5H9OBOTURHLXq67hbXGhfc6i6qkX44uEtzIwqHjBifKTIKPfGMrQ7W3E2hPRe/RNNR2M0FDhU1LoWONy7jg1vFwUZxd3fXG/3gLoU74+7uCRW4+30icHe3nmhcajFaB2dFjdXy3hs9E+6TaOHOg7tDD14XHvwWLk98cXd3eXD+gQy/jiRZsm3bls5CoEGJIny+k2zk/P8vGmTOtxP9oehItGEJ/v+035Tv/qfDfA+/Qw4rwYPnGDx48eLFe1jJAQlevHjw4MWLFy9evMfgwYMH72ElBySH59nN7HSeiQnQWmH08+6W45xzzjbMOeecc45woGHOOeecc84555yzYc45G6VJ0vfdM+usmfN9yE8PF5613h4cmYoYLu6AhquI4UKGQweK3xreJep1K9hI3OnCYeKDpoIfn0ouf4sw/2PnxIV2BUZR663AcJjWMncL4qcI8VuE+C1CdTi9ax04lQzfRQxXJ6rDSZ2oA6ftwMR3EeKnCPFbhPgtQvz2sLkLUNu2DcPR/1/rlEFx2zYOk1zbf9r6iAloB53+7/R/p/87EW6AghRSGwYIIRqRjhaZYjiUMMyjyJcrhdjMvcrsCizrIg5ug+gQE6UC8qCsHSuDZhbgV6BQlp1EMN60UJ5rTJOmIHiBY8ZyVAEy0ggXgduwIBFJnGX4OHfFYFEgyG824zKMxXHDSJklhxxnBJGGnntjxH67Cb1pyXXIiYfchqycXwmcq0KWbQ+RyFkHZDtUXZTpklnGQCmqzH1RaCDSOhBbbkNAEYOGSkOOtb3v02IPChSLP/JMq85Q2qrmPZEIPddL3iqsZtlZPbEz6+7r2NqFfgSbe0GGMFCJg6ApYrgOowEQ4VxARSxa1sTU23F33YTPc32tEXUz76Yox6zrOn/HRffnU6ut6ii6KOZ+hgTh+wSBkQy5DVpprZs4t1iwNC+A6xMW1ZWfMEB2rJBgXrFH/5pzfW6iVUlMIMhABaq4kUkdjIuyiXNBHG4Kq3NhS/KFcFPspJBMjoqNWZqvNqjT6Qr9cw90BGerTKna1s11yNUTO7OsUssMDRGix7EyczFCgsS4QXDh3USdSzAIeS78KwKzBMLFiNlAwXbhCkKZe2OKYv1ULKupbUK4ch3EP+/nXZ+/bRqmdUN3Odb6F3YoYdoas+2be8Uks43rm6nvxVbo4DrchqFKQexFb8WZqhSuSIE9CybCUKdbbQ96v5FZwm1M9OupPWQ/WxX53sI0EdCmqEGN67jeFQwS+6JejsxGusybNXSaoHEhtWCgoJAmXVvMUlIm0AwDr+ZC0GxfgBpjnrUUxEqR63Ah4ibGmhATycg8SxFQ5MtciCqTJGGvmHSsA81uYglvfjvpQCVm6CNIEu6+5D5oJoJCIdopOpYTGoQ72WJ8AZ32bAE+4fqrCbQnsB7rMaBGCULRoFYgIAKFCMCCQAMNNECBGuujivbTnpoa6j765I5yucLpoA3uv4WvDXxp8veA4jUfgvQVfACunedPpoLVH2BF3Sq14PQNVL1Wd7g6Tk06ruGoAzUSAYx8xWpGBBDUPbUCAQQ18cQuhAr7j6ZitfrZfHGulHg/fGsAZRwJ3D4j35vVd+ZjcoMEWggVkD4OGAJmQNASAA4OAYE7Qe8n5IA71EJbOwHQcnUInCf3KfCu0xFeLp+T26cEIw8QwiINfjQfhtHqchq/9I3hsRVwgCDByAScx1QMcR5ppH1BrBVeVmWbOIE+ucOPw/PHAz8wMJ19BGD3UVkgHF55Awa7KW6T3R4Drr7qslsxK2DLPHt1S78t6Vt1v4aK5TzLFVJdOc49dxVAXhMY7TKvMJ9vSt4PJOJznuTHAL98/HjXPVyOd5jlErUxV+CD0AHJ4QgksJqsOHN5YQhDztWuOq/scuhzy0W33JTxdHgFgf2G8bq5kQABywnjy2flCq8ZjNfVBLvyEQGIJ3az+mzEfLamt9sd8TzMeLRBAAaMvjqX9QurazmRixvnV4zWl2FOembN6M4qD5PTbUHvmeHkvKxOYAawysFkNVtAGVzOs48LbBME1yd2/iz7AG943a/mSwMuzYqTnSF7VBN3+s8EyNwNOFQ3FvMZfr/vgc1hNYPBDri+cADj0N0lbnYxyJ7BHLi+sKAASR8jhCf5CrBkNV7vgWkuWZbbKa0nnEdaAkYal/O+yjFYAt1DgQWHN0Jw+q4uDvNEHOHR8UnJAB549NUTj4gnd6pUk9klcnIdLRK4Hg+v3YBBt8eBW3dMSAPNfEVyXYzvNyDBsrpDrJr5aEruNlhy7Vq4J49MM4DbFOAKtCSwdcI9eIIfUOaHhIrOgPF9k2sguR2XU1i+boKRPKbvVozgNqpmubcb8P2ZL5uX2NkDcLy2Gr5Z7rs8TMdAJjBvvjmWHDtLwICpgyZP7sOByRdjt7HD4TYH6G6H268Aw1jdNpf5w7Ibk1gC6j1szuXHo5xP23tZ5Ine1XV2XG520xxVL4FSza8bVlxPGInleXrbcGr2GP1XuTlCPMnTEE6jCWW2NEi4MYUEusP0FHkbYfR3DJDpooN4m+Ps69PMl/T6bPNFGb96dXoN89NPJ7wWRudXcxslgJHtdbV6OfMlhf5uhz++I9AndtQtgJFgOTGQMcDFgG5Br3MxWF6pefnKCHkJQMqnZQcoyynagiWWQAt1LdcBvRODZQZ+eQCQAWp+pOUjEwM8hCf2NbRAeDgZ7qCtKOCKAKhAhkCao07/cLckcKT28PC2pgYhnBABpFWpAdfELURUagBJAlcCA9Undqp44PQV0BaUcAcBQgRCnHBNCBciQZH2DwKIIgiaANq2dY2oAAEqQEi4Sp1EONqiEO4K8LYgwnPhgOip32rxmN5PEMBbEAAHcMARaB0cEBxaEARaWp5ZgRbHEVpwQFoEXBAEnOfEtfLYERLyMrY808Kzu6VXeG4tOMHpOp/ZcoHLzhNmZTY5VE2uphWeuWqtrA7n/c04MH56JkKwuE8yDcr+6Vlbt07XJCRU5ekZirC23TLZzxg/PauBmuPGAjiv3TrVcU2uO0NhWnMdRCJYVowrStKhEC7YapH3yd3SOpmg2CDHEZTWcBu7GKnSjS8dhANc5hMOyxXP4swZaNYsx40sZAZAWkc69Y2pW5gdNieWm93hWURhEkpwoMGa20DCgUhEMSgdhMP5yzOaOowu44mFYggX0X6o4ToqDZM0pSME4frwAHXNfH60UGYpQHTPV2niPhohDkuyA4KkQwlnetjT1nD/yYwsROYhVhFCoek+8Hqw4j4lpO9iu13d2U9eP5xZR0M6Vd+ZggsZMMnO+KkIZFTfGGUysoCcvkGsky7V4alUPxl9Z9WE9oyyIIo6JJOpDJDkLbvTfmhqbSjpCKf3YVVxn9x5FodJkH35TyRna1tdTBG/43iTE8BksmYhXO+sPa/keL48feB843yiTjnH3fMz1c/S5w/JjtLRq+E8+0cnYGl8Ov3TednWrbPjzfFvH//ccJiJSWQw3w/W7fMFuz4FXQgE5TKkJDiuqmySZra0jggmEWuPhVz5XDiQNJyI7D1MkJkRZaUSbh7W6SqZpEJSZb501MQbQzXP0lAaG1+sk915v83moNhQGFZOnK9lAxH87eMvmcKzG4C7x+lFgtY6O6OKfNbAZTm4/2ByedgeZ9ah2Rw8EIL+EMcfbFlAFIW9J8HXKE6k89Bsq7OD73gZgyigccNKOmpqZfowYMqS+W5pnaVURFgpoOWxO19TrGnQAEXedYo8N36pLW5A9BNDjnckhpWmVJIOwpX16HCfHPfcd0frJIEgA5Fufq8R5nwtJoyAI3JuxUk0f7txXGVgAOc/UBAkXxMU5cMVGd93l8l81rw05Tlgu718xAp0pWnIcAU3s22Vxcbu55NNpvIcwC01FxXuC1gD6FOzhMBycmgo27PKUzMVHG6vy479/78deGouhLB+3XQETE6X01Mz1GHfjRyV1bziqbrdDWqBvD9FEyIns8kKmNgEUALs6RfhXF46Jb1vg19BwJ961QDbBYBBcp2B1E/BWjxkwiMtlxMJJfSpFyHAany+TEZMTzyvSCBPwRzhsO7mh3ed5xsOt7ZV8Zqn3yq0rHLP9D5gvloCCOFPvVposQ4OO8AAAnGehiuT0bH67oym1W76rnjlSjjcX2L+yuOFw90z678f2/m+XK1ueOfh4fTWAK2HJgASTm/tmdW0PSpYKrSemQo1gEq4iopnBiqsFkcVesNLa7l+VuwPQTgheOaW4Sy2qwtgydN0FSYj6xJgu/LMVFAmC8Mo9jQNwoPHFM8sBIH9ZFDdB5PujHceTjBv5o09XEaLm2dW08LkNJxd9wO62dIzA4Lp4IHrwwPz3XMAUUSF2ydldgh9khE4XJaD+/XhoZpPT/MIcFtsFyCusVuhIMrdroNqM7J9yl+v98wOoCju5v76SuA+ujEPKCgtt9feXodojWupEiLA/shuxnPBNHpvi9nAAI/dCgjH8jyb7c+MS8ofIkra7bW314Go47sWULN75epyr+heYh6whfs0u2/PqbHjQ+BaaohzHo8nl+Mpr+uz/AlOWc4ABptXqrgWhBvX/QM3Dtx3S+vskIh0cYEoRjseabB5I03+DKzfWWu0442LCa11ynz5QOE62NNNV8znR+tQOpDfxAhFseMpf/q/kae/Lgw3zXuDNnC8oxUPhSbkY+QDOMx2th/k5POyvFqndPdakAjDAL7jCajwozl1vvmC2t94L/4bS3zHI5siEGyUMaQzPGB9ssvqNNke3To6qA6gBwRt6Hi8E699J/786lu/z2j/YOvfAJkbjDSnG2o2+RhQ3dKhPHq/n7VYN8qEQEGCHL7dP/kt8RG5fcSiVyOBKUcjeCLpsMGhX3KBsI6GsW7OtNqTt/1THO+fYP/6Hd6H9R/f7h3eHv4ib0++VzGr0+Vq3VmtJ+zYqobjixmWDrZ/qR/kafrGWEgxmkxTZ/A1hfC1473MNhY4nfCx+OfjdfvzNSvOloNCPhcPhhWMZmQVVo5o1X58TZsyyPnafu9B64e4mhg5HYUw+vMdPzQhkkQ+ZljSd787n60zrmOm/1HW9LkhkU9h4PTNA72nytc2vetkcEDpCCfREFG5lwHWFQSk9EmIHEYpUhoOOK48qysYYEvcyBsgaI6NpRIi9DpYrl66PougSg803QeDAPLpyOhqAVga+9fMN8+mYABoBu4DNEF1yYdyeD2kQZbtMdxC+LPgSg6BKORDWPK4ioUFa1k7LuUAkNBykA4VQAUUoW6fTQO4lD6SKgACCNDyLL57hkjsQlV74pmqUYIAJUSBgFp7Aoi54PuA34H3jvJesT9xxtfooFdG3gpqAIHWioGOA1UUURECIARQgIDgLbJWI47xH/XHeM/wItT2Rw13VKVtaaFteR5RxmGIStvSEggCLQaqoCroW0CZDiuKog7gnioQAEpLPXYhgoDSB2pAFGiBeIuAGH/9oShPE40+AcEzqs8DNaggGKKgQgAWEtLOhRoxtfVTo7wI4R0gAeE8Y2AAQasEfxdQaAEczHWD8yFm/dcvAq/CM7zufjK0wGFrZb7ZPQOBzexmLtDSkqtfDjXaagtcfz6zdi74FThMb/gYL77Lu0TNH/MMhm94N6jrtx1M5tPV4SJjB/v77CxOgILbFBQC4h8vTu/GXIyJt9zmlvbzqLr+gQhPGeu2FZ0YljhA/YgWS5D7B+ANf5fHVqAVepNHatsvvMdQcOBi10f1D3+E9QnC+6noo8o+sTvW9/Ty1cuN6zDui9+AlVnzOm6flO3B7nvIK1c/dd6tDBI2y8mY7YL5FtI2Q+tWV6rrIO6Xidu0824C8/k2rys/TeZ0h7gvukT8/sC4eHeFU05L4uHBdGhlthSW533Ojy8ZU+by8F0zw2C/H1er2UPG4ro6LLtyrk5TIIHxZcU6wfLMpOPKdbs6JcwOm/mpGtznzaYbPRx20+H1dDuNYb+/biGN18zHD8vb3q5Dg815tpoNt2Qcd1twuL7+cl8M1+fjdLepTgWWQYybnlAGcHr5asJtCZ09wGwAGDA6v/zMCTjuZz8cGM4u/KPT61lsLyuq+/Qd/br0/XU7Hs5Om+FuBOVheQFLugGsV6dLgttxd7wsr39p0bBZLNEI5jzArTvumj0cp6cHn5csU3bPEsgO2gsHpwAFlBL0nzkWgF12J7UjUyCN5ejhbWBeDvP9ZXqDE1u8PjwYiQMJicc4F/SOXpjiXDgUdvxd1J3r67ebK5DXpUM5b+CyG31V6B+ehtDfeMzFfZCdV4AC3hzpnQ+qy8LKZL3CCCBJWhKzNHoNo9cIZhzAaHFUmBxfYnskt0eE+fmBywNi9ywxDASwHsewfET2SRq4D3ezIV1FfxuuLC3LFBhMDmOC/mmAQRp9kwSMNLcDO3oNEGB/fsftMa9LV7pzRdmHZbjpCRXYmC0Y4ZZJ/7Q+vXlnPR2Nr8PjFm9gM11d4Hhdns9TyOsyF8B1S5MogNEAZ659JrmEPDGzngSYX8cw52Fuezj+8TMG+LzkMvcrOVliN3ptt2lW3cshcYrxyCb7GIkl776/7mazV49mx4Tr7eHS7UeTc5eXHB7Ok9lictq8/kZCC2Tyitm0GXdTdmyu1+vrpqvJcjaDRO18299nh8t8MNoej3/8Nm1GuObGJIDrDcj7/fzCfGhJ0mKg/ZLEAJLe0WVzOp4mw912AdVlSDcbMdg8UC5nOc5Gk+P6bPQkBvecMD/ik/lyPhhdDq9eboeAmeThobrtNwPL2RGW65dyN3LNjjwyYED/CKB+QIWjWcSRkSXtxC4YaNkTeXzrhBmW9A36Pg/Hxpqz5MMDdX2JCTAEcJ4fgMiqsuroMbGJK8PmJvRV4Qn78z2W1C3hEDhKS01LX3cH0kPpqyIOAeKqWWfbJxwUBCTUkRoIWsES8Bqo9fkWAjxAFHX6hjhoDdLTumY1LWSIqDjUXitAOEo4rQJtq+ACrjhIIAmEC48bOOGEiNQaEHhAOEDgaik1hLvWroi4YhjhhAuouooi6poRDq0ThKugQrioaDiEq+ACBICCAriCOgIogSNY0qsSEIiDI2448QAh4QmES9BiQECdkThCOL3hhIh75oS0QiRALeCKgCMOQgCBUxMiIig4KgIELgDhSni4oAIiBIoGZCCCIuIQgKXT1okCz6ugEA6CtjUIT9TDvRbIcARAXQIHVLAMUFxaWvWatlYcaOtWcSQcLFVQhLpGwAAXaL0mXCSEcFARgQSjRag9AG8RLMNVVKipJdw963S4SpXIDDQ5nZFCOk2KpRseNMusXSRYIIuVxWxbBfkbDInQ4BwGHGsoK6t9DME+QuBDrdx0vFkATEEgeYAVhAHVcWDrYaiOh9VCzGYBUy8snC4W8yA7ERHCoKA5fI1j1XwMEEPEQIU4QpDjrczohcanO+CixHBxbPcixxfq0pFEMq4mmmbp0kRLIhTBQJn/oXBgMWPrzE523yGUfppzcPA4gjgiy/QVM2vT8aBtDqkA2XxiA6yIYkBmj97V9Ju8aJHELIooXB3T2i+VRWidGYtDlQjGdJ9PVT93u4svk4FGCRrjIAJgqOJ89kt1hOHhMgbcpZI4GoQMrVr9ZNpbi8MDJJhYDEVpGaSSvKkNZyxmEN0w07QZfJN+54PuMeTSCUA+aCVJEA53gLU4s8bQfvkaY9nKL3mmPv/HRxR10sITPZPPbhrNWPeRVnCOcCRYzAPigNO1nalyfW1d5iAGx+pOoYueLjVL95gErPnPS6CRciyvQviAAdZgE45WBVE51QbU6cW0umNiZwTYfI6LmRgbPlAGhVB2D+q9c3D0NFTJHrDx334VcrgTbXcYvyPE62ve6OvCRdkYYPcJCYuzkajACKgAy7/GNMBud+3MOcPi8SeqEFTpX/ETszPIwQYApvEzFavyGYLql3O0uM/pEl6MjT4HBCrAHGA9d04i4Cfzr/z725vRX8D/5XI8cntjHLj8Dp5nU5r/h+CViwZs/vjzKm+9OVmLl55lAwKb+YCn5x5qOczu3Ud7gNozCxWqMTNGBxIPz0xBQ+hV42l6q20IBhCE+GWvDGpRehVRLePN13T6/48G8mjZTEqC7qfqgBtiB7nWJZhZmQwH2nuaa98YrWmpSaOtocWjBjw8wAMn+ni01LRIjQJpeKTh4YqoCorULXgoiLbUrWiNE+KB4gECwos1pCHUrQIZWrcKouCBoJCGuwGtaOuhj6pFRUUBqes+rdSKBwKKBzghKAg1ojVO4NHWuNaAhwceNR4IiggQgKCuKorgoYC4Bi21eCiiToCH1DV4QBoegroborSiiNZvCWy/mCEisp3/o72d9CQUV4XpjpZQMAPLQZNf+JQ5RW9NryikgQAoaQDep28Ij630Ch5AGr0eAB70VQAPAfAAUCAx+goeQC30ag0gCiD0V3q9T1vz+NKjQBqiQJrQVwBerHlcQQHEg14PQNxI45FCXwHwoDdIA0jj0WktQAYEQBqk0d8Jj7LdtZydo8UNSnWFMgc5s/FA2w1PwEljCVVDAV1DszLUHM78ntWBvJUcNuzuVIdgd+dQUX4yWS3gdudQWf5gLJfCfMf+QG7hUDGfUx3IW8lFRZnl/gC7O4uG3CZLj92dwR6ucKjY3WkWnrvOBi+xu+fD4D3B7s6hoptZs3Dm81xU5NU4BrsumwVllhwqmzM7LMhbyUWVZWbV4FXs5rZoyC0cPebzPOzJq7FomO+sWVBuxQ4Vu3tWC+V2t0NFN6NawO7OoLKytVzC7p77gZVZaQ4Vty73B8otc2jW7cr+ALs5w4ayxY6wuzOorMySw57dnWZBzpJDxVuSl06p+h8oHQAIEEswNjSUCQdlfjEn4FhgWl3Xxn7DsqSdD/MT7DecZ7A63k9pXO1yTZYnjgU2++sEFmeWJVkPZmusmTLeJePh/AS25TyD46ocgWtzncBxxTBhWl0n8HBh1CXrw24FzZXxDU7L+SppNs1lCssTw2JMq9kEFmemXG0ymE2gmdrlRo6Hu5XBlvXWcnkqR4yrbSeU45hjgc1+eoGHC8sOGy/mJ8vmyvmWdjreT2Cb5nJNlieOxXJabddwWDPq4DyYTaDacJ7B6rgbp7HlPMOOpxxa2rS5XtKGK44Jm2p6MfaX94ToWwbBFmLR2PSIjW4EOjW2jRg4By3hVDFVMVeLCQwPZBx43+Scmu7SxpaXksNDM7tiqyYvHYMl8w22fLB1Zw9L5hvsOLDJ3Zplwxk7HJrZFltVZVJYLGx3LbaqmHS5ODLfYMsB646Hpd032SwGzGbYqmHSsRja7EpzapgUBkfbbYzlg607BkvbTdOOD81lTnNqDgNskDZ85/1+z3B4ZwjDaTb73B/vHNLmG2z40Kw7BsPqfslmseA6MztVZdOV4dC2s7RVk5eOw5H5BhvtbV3ycLT5xWw4sMs9m1PVTWAwtNksm1VTLh2LRXObYqeKy53F0OabtOOAScdgSTehWQzsOmtYNVy6HC5MPdra9hjqq/xEtYGvIDgQtlJBI9K2ubJcSyjS0mx9WesSoDd5NZcRaSWhoiRQUdKpyCxmDSWhMTqMhiyGGSUtKyhAQ8mgsewMKkoxGsuSlns6MBo6yD0l06yhAxoygSoLaY2VguWeUozGspBWUdJK09AB1aRkZndgeaA0K0p2dlhnUpoVJTMrSoI1lISKzMQaCk4TWcAaCmlmmWlZUZLckwXLKilgDYWksUzSmswM7IXMYtZQEjOjAypKWjZGB1RkIewFSgavoCRGIwQOqHXpSJNtd3yFNC8AYAMasgQD5b+j+Ko+kaGNynCstLm+BWjIBAuSpAkKWECBJjLBDDrDgkzLJrJgZmQmTVDAjEzDggI00GEWFAwLSmINBTCjkE1QwCwoSYNlMcwoQEMWjIbMbDzMGpqkMnrNMMwwDDBooDMaPNN4occaSJJG6TEy0xqhgJlS0hooiTVkpoVRwCzoDBoyyQoKNEImNJCJvQoKmFHIxkiSBjIxjAJmgaj9HQDGYOaHHvrkHYgAKGDH8sYSak6BBQ0c8fZVINNcS1oNIB4AyqMdIABRAI80egVAIQ2EvkpvC+DRKr0tpOEBpNX0ugIoAigCoDgQ/iK9NWn0ptHfA2sAgwYUtwbAKhClAVSANBUAbekV+ip9PQBqel2VXgcIBPCo6W1rwLWmVwJHPeit6W3pL/SGA+H0DSBNFA/b0w1BydN0ceH/AEN/A4gdBkyjokvD2Jb/GZI5SXALQt8INHzm9fvK7YE4kzDB3WH2lsdgtu0xSdTLqlwiy7Igj87rr3lu5dldovna7Mry5D1tvzdGactujZwrJKQDNV651oBgYKEibdkzQwQlAUTBM3NqBQwDWjwue2RKC0LfGtVleOZ1S28BcC17ZSqwm5wvTM/rG45rIVUqqwcYlcOsZ0hce+aBrGNs0RzXWuug5nSzfuhzXXOYwir45b+OVjrTvzjexzs8ClkKoQcYvNaWxlAyCWRs2ZuEDpNgYTEURkfiMaqjPk5/tMVD1M+2+HeaN8Ab3qtPxXc8hWh+E4O4DazgWlsYBGAGFhzEDlQpSFlnDMi3k6GSdjwYAvZ1jkycnX2ebbOrYjn8kuO1pzGHB+mewWtFC1OOAk1IBsQEQcgMs053o16/1SKbNZwvIoY1sK+9JMzoWLW8FAtjvCjI6Ra8sMxNtlsTM2hxCkDaTuiKhINIyl81MrREREkUqrpZZl9638X5Zr//y9hnK+KljeyICk6v4Emn25GG2eKQ+RSYgLSN2e0jSWhM1ilFZMuG74c6srjlxoc6YZCGSKAB807OAIMrbXFAMpsDowMRhy0AAes2GKvDud3L6b7x1fJ151PJop4cX8iaN3b2BxCmhBOON5BQQ0I97gT7QoyWx4OWVRSlrChvsTaLRaOdIRVfXetAb099jSfWeMeaz85Kj93pREzAtv8crpt0sa3YxBFaODieglbAmsWXxRWDJqq3bHFQtEymKFUEpLqqjNTwaHbAtBvH8eVYpx6L9HDmvc386D+S3sV+nU4+4zEHrAiOXdoYK21xaDAUZ4ipYMMcmH6NsVxUxcs6Imkozu3eLxc3kjUt6YGvK6HFqVAPQxB1eMu6Y9xhQtb1CZ60kVkhA7OQzo6xh2eIGu7DVA4pFVvOWhzE7ZEeWTngjGrxb6oRVIyooWp5I2jrfDnwAb1Rab+uw6TRFEMnm/sQv62FIUcJvcVFN+iu29/IX1GuqnK9d0eVvYJK9aWtUzpaSkoxu0Mw48htgCUZIgjSaGmqrJoTQZTpunhrxEPFXaLlFtSGzVZOO2xdl8Q644uLTNRxIYW2XOmLSQoTLc8musQsOUb3Kau5C2VKzpCaSFRtd+Mwv9Q6KSEhbmRyJJPUYNlGy0PmTYgPrJiqTW1o7M3q4qmNXark5hkOT7LOIaqDwPhEX+bIbdDlVO5YgfcOXXtLAzEVREZfUU5ZW4ePnpSq47f6Gzqts5IpFjFAbAgzwC4pqRChZ/YDIS5+GsTz2X4MSrAeEL00KXD+M+bPwJY0NHSI4y6z0PxcYUh0jN2QXHDBBdFEXulEZEvM37OkT3SPoyONqFvtE2uSjbxMjVpGIlpS9485WSNDA0rhyWRYx36N6xqRIxgcoSZ41URfAbb1lrgjngdfLfgHXBcdTaCeqAEZAatMbXpy1riDCudTbMWhEoamj529lGu3bSLoooPn9QyW9GcfuSGzti8hHRoC3VIIUsDmYAQhD8hco+ZX2tBQqm9H+i3lVIkMMAeQQi/gpLQ7SIcd0MmJhP4mtqX627Ix7keQzg98/AN1jV1ec8zik+Agx2zCtd2wUnnTQn5Jn7QOzoB8k+Ff6o6Xui4jSdOgoFZdhjzoFjLJfAoRVN5Umfi+q/4AeioN6NZX94icmCGgob4aHVkm8+NuhsD0Thv62PWyETYvQ4xlJl/XDC5mt9oOMZn5eBTnLXnwhCciVnZKkBEaFGiQhyyxTAYSTkgPJHMgiK9MpSfRjc4oJ8QwlKFYgTCd5GBs3IFDaMynOdsaO86B08yarFvSEJZCotXWswKHv2HstptTHVaBAem91GXJA4DtJi972gGBAscMqCC8QOZAkZllT0Q6bmeGhGCw7Cmib9xJghAqMxsH0QcakgXisJy0MGzV1Y612sDtJEpV/1mtoFs3pzO9XfGVhwJOU0wmkEbHjlA7sVwAUvVpoq9MPPMRy4sDhORgMmowobhGMe7ZtLjCqritugyJseu3YRfi09rw1QDNQ9Rqc5CTJYXQ5+J7zICvpFGPWSCugojkgU+8YLJdosUlRQnKujr8Co725URm+itGnLsR1IYpYKJMT5VPxVCNlYlXqxxbhdkin8qZ0rLoLlS7lOs97jrkr6+a6yko8LaxI50bYyZXWMfM0Sks0V0x2FO60GrL8IkXrMIuqeUtj2NVI6YdUzSEEsHeDZXkIb6yyXasYsK5NY2t/AX+uq/kZNQInebSXSzuaHOhQtHWVhRdcw90ypI6e6mxjxtK+0qp9lrva85597cpBA19KxBwwEEeMXA72mHoREAmzYWCm68kPXqaeTMOER0gnRckBDcgcwpmn3rRr9ApTL/Ybu4MvGa7XUUiOYIupQGFaDQWzdrJQzRIDAACeutHSPvRS2vcmayuC4bNxac3lJUHTFFc5/GmlD3fYNu6chq6gZN18+a7WMqXdlpqoicjqOCwfr26TpiSWuavf71afvnbBlpXC0cmPCVtKgoTZ8o47AHCvFBpYp1/QcFl6QKIwklDbFrfoEYLU6VboLuzFxbxUaLJpmDgCrMwYQEdvXrEcvH1uUGUYirIJtIwrJ8kQDolhAFYrR4g46CY7qiuCH9jvqgUfYCUB9FtMW/FBl1zByS+eoguLqy7iNTmite92ToBG6KivBGnyCSTefIqq/BLcuI20KilWeaaZ+6/gOKiVZ7SNmOMqhZUWJV2vY9lLubPU9KIM1QYKixkFEuq3FkM3kt/yBiWYnbmCxUjVb6erGahXGsxi3N2laZFuUxgCNIZtsK0Gu+qKeVDVZZeo1yn2rdUZosWqRxTqMR1eM6gVV4lDXY+Vm44Dcp6UirGVvssxp/yPrSSMtWzK2l6mcvZJ0Nv9UhBthyjcR9BFVVbv+zojBPkscfWU4VKL20m0BKQ0Mpq8ullpDGHBoqSVlKJvDPAzftDU5bCXAIF+0NtOjoapGuEwiP5Q2zLG3N7MgUNT6dNeE7Gm3GgYUtRXJuTkyc8FmUdxZc2pOurFOxxJy3vNc8wdfy6skHO7WnIaNSeVj7wkY2djq2jpJWTlx2sAWPMIFeQgKJB4qQ6aCMhcAE/1DgO7KVE5lnkFQtfnXeGCg+FN8tGPnH0Y2tscB+4yhVTgaJsgpqQSrQvgm71dDtB08E8ZUtuplZoEQWKLJFoQTzzs4DN86UlzVr0Scs6fVZwqL3AzZmBuuXvUtpwrmZxhUI4Z0nS0HkioWMYdw/0fXXfITYqNeQNNK5JgCfZFBrs5LoVo6Qi7W8Hf2jWjgYa1RcK67gPPB4BdKtcxr1X/VJ+PaYrlnMvBXXrSy6vPomTpLhsm5XSvelWgzZ09hU+mZqop8g4uC/pNfuKRGHGvtW5NUIFFVddbZJ7z97ur6uN+sb1FZ9+wqRSoT5XfSafVI6cdLd6IGiK6c22VyodGiEjYeIsly0PPZhMUqBEUpS2KI3xbPWZeW9X0LjC7AOo4qNC3Slh08jsfggTbGgoruAF3R4GKyi0CE8VjM/96HgahVBSCUejzQr1KS5wkH5WqmD5u3EsjivVzcEttudSjtFf2wm5FW8ee7dyMmTRbFwcUwC/Ke2v6YT9siZZdqNx34+AE7sGq1h2wJ1Ks2ocpELWbHsW0XAY+yEHwRVJfkp4KKIWWa0hDIzpumbHAwUWABJBrfqs8pAEn/aYYr5pvIartMWVTqB2g2z/AoiMLjq9RVGxRpvXXwsaCvaoGYPiV6cKYr1SYODGeiEgEwrhwHhkyoEeIP7It7IFDIwiFxxruIQsFKW+no+Kc6E7oGO+phr3Fi1S7VFDq9wDTWS9yXAephSiU2N0TIATrzhP2Ihfz865IyVcQYODRnPGXIvxfywG9wdvZPMH5rLSKXsqV6lzrZ570RxCN8Gpy4Ruyfx88sC7+lBc91RPT0d4HmGHRtlTOvP1pVLekvwF34Sdv2AKjTG8OUB2wu3urisxQ0pFOSG4OKMAKK4i9mxf70m62qs4Z0N1hbSyfaeaXoToN+/rGm3f0rZCvAlvqGgo/VMNpfwV/iIWLOrFTMQoKoZfHDnBIjBIzES432u2V9251HX8v2ENcieH5qvUUMhfPXzVNFQN9skDPGpPj7d6YA9x20h5qvHw548KW9clOnNt2u/bJg8kf/twacd6n3zqYoLjwwnPWTVQpcn/rks1xnIG1UIo13ULIWT6Y6gad7RazLNUjvuCq7kIhTGjlUA1oQpVrsHBdSnFRT//2M5Z2lXYYEd9wYTDrrSJzFxcdWzFSYFd7QgZHmZlVN7VnaYuHVfYdzu2cy5T3F99TGhsUeayrk93zgc27EnzBjM1qC2/Znk30VDPTGmn2vS1PbCSstPAKe4MXTHdJ67Bo04kAlLBFSbmqqUQRRkhtYOKxfiIC5Z5YbR6MrA1IhZbeM22jrTPrJpnTC93xE/snDxEO6Mnq4apGNUd7Hqnr+tNpbA+XbBlx9lPwC266a8VtYnDBg1UZfZ9HAJK5faUH0cm+9tM8Sa4ot5yQEpWokKa+gxPzrud9nMvC4cT1KwqS7vh4ufyHsjhQUln78l/hPsexDLX+3TCox6mqFTpzfmpu4pV2TVczc0rTdQgwc5XogqKs/ilbyImWKxykjPI5++RK58ifi3yEzAgLQJ4gVcMrNluCbR+OrQXZSl7IifR2Pmrf/+ibxVSPA+b/PHoEK0e/IO5wb0Fpc0daOuv/LaP8mGLVtoEtBoKywOwlCelgyxp/X7qqiAyqaHmkTVolU20JhCiT4AqMQkcvMLmJ/69Bruk5n1We12T4VmNLTexgmupxoaG1ib2Fiq9K77KjU2hga73y+rTSlEqe7s1kSIG4vnimr/e1Rvs++dyR3nGvtq71eVOVK721dblcoU606J4GxccHKc+iwrSyDLT0skSNinOg5DRItGppRoNXjEXEAYTBAqiuFFx8UcNJ2IlBfNm2fPV5gdho6cLDdPYz2L8fR9RaK7drSBeyOZLdd0sw/ryXLwfdnNV/RV2/Jg8yCmKq1CZFBfQzFjeyhYGFHwocDWBu6ZjtNcBt+Aq1LB0M9oZEzaBM+IFAYg4DkzB6CaJTNYGGTBFXMSNnGlYK7NtSRC5W2FZWlDYVBM/bClqhHAs8Wralamws6ya8ucccAxzn7AymwSLZbtSnBk75YTdKQsgtH6Ttsa8nBf+W9UBxgv//dqQ6ZWzvvWXygOiU1OAvu24ukwm9X7SqH9a7NOxYOGVEQE21xOTpsok2Zw1+UUTTKjkvo07EYh3DAtB0C0CUwiKP90qyJRMSJosR2+Dcm2G6q6sMKxPUejCdIBxyGmPPZMkgevEnUAM3EbelIpH5CklZhJEv55nrR7J0NWrhq2cOFB/JU8WVTx278HXbOvWRL5TeSABmVfwoAlkSzAOYtwBEADB7bZh5E05cbgJBZk3OxQs5clqglcZ6KZK854Lt5kDTEiYcEAVQlRYgG61rxb8AwkhCkZKsFh+xe2TgSgThJwZ+2mh+BW79ukd1mA7REFydiD7AUHRfs6oY7g3itZv8iYpFy/KKZM8OgBr2Tccl4dCFiSkClJIYVg8DRv3oeLNC8jaUXVxDFMhDFj7CRJdiIAT2biDwGIQ+BTAnqBh5pU2BzmomnDB5pyRTubQCHQTJNkQjNS80dTkNGyzl7L46SavryI9QTkk5H5EecJBz+y7B+xsl4LJkSH+gqDOR+etHyMlpkoSP+8UcuJzaJ5z1myiffLAoqmuRDbanx6CKBCfGR/p+RQ0kTVIgvTegoOsSyQ9+xectH+1uzOezaEw4zYMDee9DQu5W8ntk8YeqtsyB2KQI9hueDrpwYXsbhWUUggQfJqQg7NZJrMQ/2mS7OaujYvoT/OVIRdTQfH9FEMTF9xPllVoLCBHfOZAdNtJT7EQb/VQ3FvMH78ecCQYl4X72ruGovKwpPtToMBiyeXcSTKj4sE4pr4EbJFDq1e3yjSuRLVhVuOgp29FaVx6qZJb5F2ued4HQBIZ7JD+NFrFF7WSLy2T27G59rVR2c4OvGNpUy2YkJKvaN880Q4TytGT+RdrtPlZtq8SK2v3lWnWdZn+sRSe2VDenPQjY4a6xGnU3LNr6zYqfLk0cJy9nmdmIHoGHVQi6z2v0p8T0Ob9wIhnJuK66JdiL8ueaLBpfaUsi1POO8NtFSWRnI3Grvh6lJluPdRzrp4ZPWhZxdetKI/O7ouz2xboDKnuinXit9lrV64Ti/32A4iN2yBitxHXq4hM3uIQ0gbA85QCA3TTOvQLdXy95oFYituYtnOWXslstzxk3oIQkDY4MRhR6wCEGuFXM5VFs9tchyjlLPyE3dPioFGOFKbGLthBkMTah5h1hkB9AWV/GW0hvth1oFvJHvHO+Fuby2px8DwwaxbiORtcUM+IhX76pQVvyBNUZMVO12FCYQK08cLHo8VJgIACB4YFQOR7UtbJJNsVAnDv/lZ7eHbXAQurTM7kYaQtq8UhmUIWZoNJBxQ6YA5lrNM+Gzt2xH/SNHAdKx2Vtt40SOptaHHqmDUbyM/GyKyFRvDSD2QdQMHkBsQsGbbnDbeh/RExMqs/RS2OHf6eAxjEIep5gfHvygrYkSZmHtn5m8zOOYiDV1Y/2vjSbLMElQywODqa2BYuvTKzPCYhiXjUGm8jyhYTA498LIY0w6gkMAsDlkEuRmKl420ya1AKUEx562s8bfn2wrbRgAYas2aFoKV4hMwPH2/TbgJ4e67mQY+65tdIfuO6xUsMG2bTdLaBeQKKRQ0F/huPEwCNl5+cefeZH+IXBJ/AxBe18KKlmTYoPVBcMf5WNdCZGMFDjgQAisQ0lQWVl1JRULR1M9JIjr+pAyLETsJNg6DeaJDxv2kc9NDAf3q9Th3jb4sNdIGoi7oZjB+aKIPMmtrXwTSf3KkQzZ82hmj8jf169LwxKjVS17iC4vEmaNsqQhooLaTVpOGqQFsjCoi2eNSiLa5KjRO0NW2LED2uCh54iAIeaQja1oiCoCIBDtFPXENUSFNoRVsUEEVQkBpqPBBcg1Y0re6RGo+atsajrUXx8IAWj7qPqGiPgPaItggqoK1Ci0fd1uABHiASoghpeHgoHniA1EitiAeKR0+aB0RxxYdaWZogjTRA6FUeN41nNjFweoM0Hi08vvcoaZBGX6c3eNyMoK8DBJCG0zfoFfoqaQBpJEZfpzcEQOnvPHbQKz2g9E8DV/p68JhKXyENlL7CY9f01vQXgDTSgJo0hMj3kWdXKF+akssl0w32lfmY5OrXwCfkzA/mAucDqzvVhV/M2XK14Lyzj8Cq6c6Fz8mIy4+G6lx1547DmOkUVgdWHftvDD+Zr40xPjCes5+wWyejI5NZVuumnDuOI6abJs+Dsip5OHPdwPjAeM5HZM3PZg2rBeeb7c/WjZPjiMs29+umjO92GHPdkOtBrjr2E2YTWC1YzW0/YXeG0ZHJ1qpzVcYdxxHTa7HzIFcdD2u2FxgfWN2tmnA7G+MD55vtx9V9nBxHOZ1ac953547DmOkUxocy7nKwZntJGx84dbZfs1uTo8+ITWZU56qcuzyOuL4l/OzGRLE0iQK7FTxMbL2F8yKH0Fy5TGE0yoVh02Z6geGY0Z3mPJivih3WrHYwHnZLcj9lvSVPozI0Y9pMrjAa5WlutqlmZzisc9RZrg/zEzxcWM/SxoscQjVlck0bjXIIzaW5XiyH4zx12ZwHu1Xa4pzjebIe5NCoNjbZJqNROUIztcsURqMcdWaXarZOFmNbdjAZ3M7Jw4X1LFkfcmE0VyZXGI3KEZpLs103OVzZsbPmPJifLBdnxjdYH8oRa6astzAa5RBs2kyuMBqVU4dN7Xa2XJxZlmQy2K1gv2GdQgo+Mi1K15U9TbNL9lQ5z8qs2UGFNfOuasy6LvfW2K5Y1Vi5Z1WZ3bCKqtyzamh2aZU1Oc+qyWqXubeKXakaa7quVE1ju9I0jZU7TUWzSyozm5d9g927Zp+N3dL21sxL7s2aeWdV03Rd2Zs1N6wyK13ZmzXzYhUVu/JgWe3SGmtsl9Y0zTxLZZXt0ipruq7szeyeubcm52VvVLtkbw270uxp5iWrprFdqSqarit7M5sne7PSlT1Nsyu2N7Nd2Zs1u7TGGtuVqjHrSqmahnlpKqquK3tr7F3T8IE/dKOKPHlIjUApDQ0loTEKZEUWaIwOy4osYA0FMKNQKiMLZkYHVGTBLKLDaMhMGqOkZWMUoKEkVFASKrJA5RSSDwOFpDFKWlZkktZQEhqjA2soCY1RSCoyE2vIAhVZMDMKSQUdNEYHNJaZWJOZ5B5KQkVJaN4blIQqsoA1dJY0xt0ws5JQkUlSUTKtMUqmNZYFGqMDKrIzGqOQVNAB1cYfimS34OEBpNVAmkdaYpAYopDmQYLhJEZAmoeTEAaJeZAYAokpJAZpCRFQzGghrW5JMCAxBBJ7EUgMB4iW3poE86CvA3hEgjmQBkFioiRgkJi09L4oJAYO8CpIiCABDECoSYMaEmuBxCAxII00hDT8VZBGC2l4kAY1CVgNieEkpkoCr2KjFIhlqsZRhZaa3pYaPPBISwxRPDzwEB4phIDSKxIAbS3UUENGgEdbg4ACAtrWbY0HfTMCBJReUUFbaEFdFVFRARRwt1a0Jo2+LdSAKOAh2gJSq4DSIkqNB31FRT3o64QHgEdbA+KhIkGa1DWAACpKC6KAB7V4SOAKEgg4ofQVQEFA6U2j4odAxZenJ8Y+s/p0frhOwwiJGMCBWs5ulnFQmsN6P+O6KBg9Y2FyWLMorQEWej53vIQ7igExA7NusnUQ6GZmRuj5vMAkW9OfJJuZZrvs/KkFBZXm23s+iiAAHWDaJKFpmBFLgecDukTQeIEnMI1xnaujwaYa45U8H7UJ2411C64S08ANAxrPt7VPM+rUZhXFdmk3ddOsenu3tU6oF9jaiFms3bMptD17uhD17NOe3l7DSgxQw7Tn/8eyer84rV8Wv/s3Rni3O+jJHCNt/XRq+1L30HUZJv/nHdvq+E+LchMcybMxgAJmfLq3h681y2tm25Y9VDvb2wtAttO7aYwGhG1fWhKbDsWFV2VQK88GEgXPHhauc3vIbKFSdbzcMQDRRV1xewqzf1pyx6pOkHg2EMOSW200a2ZLhQKU8G67IYCFR/NbDLOF4U65hgDl2WR/XBoayP1BfCt0lKYIQ5DqHD12B9ZFTzMFycTAlo6J1L0k9BpXZfZIPJs5NumwL4IkCs93RRHS00fOwnRGy3YMg0YBscis3evZABV7iCyUeWGGYEy2TD2/AXjVbyFlkxQ01PDx4tJva1ZWaSM7xKaJJZOb8sy0401ZpYaGerdFVkJqgYU14e2LzeWuGd0zOxJcJqLoQOU41oihWqQ1jZffVFuXbqTVPLMZLDxFfiQt8BoMN3p5K6y2oX1IfGV9fYNtzjMDhmsNqAsOTdhBoy9phf7LKmzNWasY4/Hxnhk5ulxevOWrW4c1w8s3tAktU1e2fJiqWexF1is4UbqYTTwi+fn0QIMe5uTCEvZvXNlKHe8TmdpGv84EKpIG+DPlBKSCtSZbTKHvam++zqEFasD6mVr7JpuvkLTQyWc+sGDQ/IOl2ZuK2FZrIpktHO4/FA7szAs28vtFLA36WI0YSjBXakYTog0mbBZBWbdezPYJ9BWcr/5L83Nf2cAClf/haRdxHG5brJm60RpdgMAZljgqNgulvBbCB9rlvEtoom6DkvUidsfbYzs4XLeIgoGF1tJy1+H2giIq97hhK6sIB6WBHGhBY3iHYv5DRVTEQBgVRRes1xb2XYbn5y3CQEPTt58fwH1tcG/b0LBEUll/ThRVwtURFBIhtJ6xTdartwPWS3LGZz/NAw9ShA5PXcIB8sl8C3i8GLIzrzNpyHdl9F99KdWMsNlDkqBZrw/dEEHSrLkDDeBrWG1TWT9JhnBgaNE5hm4oDUy+FuUl9n2fxZQEbLKs5yE9x1+Q8ecPNBDENAC7zxEj3NubH9r71aWh4IjtyTqG6KqtyIaZdRXMSVsvjZNvX7YiA2quwcK4pjL7ImJuQJsnYv6y2UAaJUIyUr/sdGJiUJh+rcHWo7YMluEiLqvRzlr2aA8xx0r7mqSBSKKmZClh0HpaM9JUXldrrEnZYwNeqT+4gHmsaVzIMNAjeWbW8+f2wUMoIdQ27XvJ2RMLDzJqG5kuEPjwzMXQdUSw2BStf8qtI5qQLSOKSccSpQ2rxy7wzBLmTE6ru005rtpxgywLA/WZsy2djSTPTFIIpey70WxtS6TUOJjVuzSoyDMTFrr7JXVhOrW2Pbi4PGkem/Z1jiCA0PVLwbZC/hxhk2PZ3dJBM5lbRMowNe5k29Y0Wkp4gHwwM3Q/bw9Fl7iloIDNPApm0VNyimmQn5J4jAAtKGkvo9jnCH0B67oLK0MdABizLde0kWWoypRE4BGhaynoCXm/vyAA9umulaSic9gOmSAVJhJDYJvMEMNuLUMKPthoGw7Bf5qqsBkGWNyiyFv0mQuQDN9S+ywyEqdaDdx73L7mFIiEA3kZluqZS3XdCegFg0G9mg4G+UukpoliKnkOFc1VrGsPPoQSc322eNJatmxfKGic9p0uF4Zls64kU53MrBSWbx/u60POMUMixLA+AS9atJoKaVnZ0nUIMGuUxCKIOyH5ko40FAt9rPqOJ3c6Hlw9EPQphQWDHRrrfbvpCxNDu4UpwgFNBAsUEAvraqO1ZPubggKhoWl9jsUE9BdYGJ5LvzfdPYC1IdmToLIjfgNKDOri5uPlnA6TZMprbP5SU8EqBqskwZX1bsIhjO94gza4442ksm+Z/c5Etz9DNM9aMJLncdfSipttFyYxFT3nig4I5+I547TLeElszhM56eA8LHRJk3OZsvCA1ha/Wv7jgL+C8qCuIX9soDNJsjHJNaW8B4s1d2nOw0qnkudboOn9OQXQQBfYTXZ6JBeBYmjPGGvY5nB9TBFHP6jTlqERlF6aM5Wz6emKJmwePIZZxzwdJrTsIJo0e8woM3Cn4Y8GDmnsr+xOKCzAV6ecOtW1LJ0ef/d7U5PqFeqLZk/LD94Tzp/sQkxxRo9bDUwOxEFNEbxF59Bp03015Xq2KnnPN0vKaIXygxVYdtE3SInfztE5XeY6pkRMdI6mYvlANhGOnjYGvg1OmSoXbM+fYhdAvp528kh7b/e4PUhzT7tUk99bhWOtczDvGW3Sqhm/2dAVC/Z1mVjAMHMb23oSQ2+2AVZ/8JsyIWuMFHzTJn4ujqIppNHEC5ikwFE7xJHzwA7pjodT3JHfBNDThcdrQbH0WSNcDSA5P2OSQ84O5qWlLuVX7Eh1JdPECrcoyrH9dXzTXQeGBe6fPluMck72B6tWZHSM5j1Nz6R0z/H7j9eAofmwvBHif3LWggEHWzV7qmat3umt3+i+SgADtF6NdkS7DJ0s2Qu6OkBbA2SbbLzVgon+wX7TNleZ/+gO8EvdsP08B6T02SlN4UGjWFU4n/Hg42TpCt30TgA+2dI0yOP8niTrNCM0W0pXNhUbX2zKviDp0y2NKnO5VLmOz9MY9xV8c4qCMxmEPhY+LoBIgr8IqgKjpTrSmxzQNA0aDLYxOA3RLCv20IQMTg7+DGETZJmR7MGG2Q0m95FHfTNHwZysKWp5fyztHyZlkYcEzWGGaRfm6P0bqw6PHX8mJeTSYll/tMnWxtIsQIPrmybT7NngdBLMBdNOR+nN2rGhdYQqFjlaq6mtsTW5oFFBR8Y2ik7F2fSfk/KKguHdcdsPcw+efoXrMG3QiInVLM+/0lX3ndkpJz10Chc9/0llL2pGf1pl9rKBLRmhZE9nlxVIMzVte44Ru21hxIj2i/AMbMyHlOMbaNi+irgROq9IGQLVY/ljNdBGa1IANMpoSBbgyNRlyeZ7S7NditvXtJ6yDZYKwpTJJhR1zoSkBdVftTMlaf2SoziYIQ6Rbc654p0XssrwPYuspeXh4mK1Q3AcdSUVTRjQVR0C5yBLkw5Bm4IT2Y26ewj8VjJlBrvoKe6yg7qdaU7B1LSvQSzBkRTWpTEKiFFMjtF+4ybaBVg+tt3mQs2uBchGYbqskCW5qp4xoSdKNmhsbmN7392o0Tgrigvjya5jqjhbRF2fsmhdVZJoWspRNAy6aMyEBXXcuHlvC/OtLrAvTbZc/P5PLVM8VqtZQ9sr01FJjtJk7EvbN6ThQOe+cwTg9lUxLdNUXaY3Sq7QuqI5Pt7Mbj5WB1QzNfvoZmV8xTEGrtzQq3Htz69CuBOp5DvKtk7xTWyspnHbCr1gkii6On7fbUcSsbudpIlcnB8kygriHUP5RvQyG7OO8rQSwhZHnkizfOlSIuLIipm8qpbTiFkHCdtTG+2kBMCGokcwy0zTtEhD88rH11wTZsRg1Nc3b70jK5urq5kLW4srl0H5ugqXifFYM4+uxvqXv/2y/mG2SBvoY8jxTV3e3ZIM7RZPNvK0Px3Y1F9iaExtLLExmr/4133GtLps+fy4zGWoa1/hnXYrWNa3pPr0tcc918r9Tux+Us1OJ1LV7JPWsvL8Jo2vcWqu3RhtM83XrHWoW/tmgNOt5yURm/xspYywtVZZaBZxsylH0HF4/Nx3r2taMbGS+bbW1Mx4p1u425p1M5KLEKGxp+3IitdVryKGULJgQZoTF9GaqPXge39of7uRBsIBDOJ+F/YtSExbBN+IKXwdcNctYIEYsfRBKG89qSbF/4fy7riCRWtU+c+3P+7d6jWtiab7ciPYFmzl/1k6MTIdGu+nleUbp6ubQZiLw/umLa36JK4FvumqwzN8xLJvPl0gg1B65TCvXqluTMSupFiPaf/kYvAeqImmWfGUyte1LK34XKuaand0otP8m0q2ko3VzsIAIdHF7BZR5qE+E8Q3Thu+dPPI6/t8dY3xDel49b2u/9SH57XBMsfBa+5ukO25FoHQSsyx7fzotGFV5Wx1mSpN3HpiCfkNfazIP1TCEx3lBUbRvyl21eHLHN7ltyAMKK+sxbvV2NuDpwgDsVV40bZ9VJF02QkvNR6/C21DoCl+jxzgXLqyrbrPHV7dNTRan/FPrnKmOE1z/PuawgVu4C6jmlC/MsTUFoe2PYHTWT/XoP62Wv/LKDqMuiG7lHT1WUfoS9rjyJA/voBcMakFWj+6DR6njmwPQb4ASoGlaZGPfxliq2G+mdq4/B6cpdIPtnYde3R2oiQPEp/DU3Q5qqrOuAoO6cd0HESjTzPKWbZWNiG4m9Ifzpa2h5zHL9O8oqZBOoZoKlobdlCXO/xGmzqG5m3jsGon+S5GZvh+ZbkFwkGZn8SRl896kpl6dNlfYlAn3uC/rmoMrHcQJI6oZBkdoX2qe6K2D93XQzKxJwSBqmCW7483f54NqdpMHFF5L+XXdgwt8TBd/hkvE7pXzCmiNCctSYV/SOGx4ikP76QOaXtRu1qnEzcnVDaP3GJ4TChfypaK2zQhaxhnFE+OOMSoI3XYZgP9Qf0EZk3JKTO0o/ITki3UYH8CvaIapnr6/6pKYscEuwFbhg+yOmoYEyw8+JHLrLmdrJtbVO3y1z9WvTqZ3dfS99W/4BEUlm/19lX3UjYuMayu4ZnXoR8imt9Nc+wzRtUlu5e5eXbkMsHblV5+rylBeZrrO9Jkp/6Nvl5olvDaUBvOOudSmAEXYH95i8SSJXD4frbGZXXkC1vQqmZ5/vlLRQVTVdtNYmyFjm1AcXfejvOQ3ahh8B9XKPey2pfICxvrjrdB/SnC9g11ml0/pvzZPonRJ/WsLw5rL60g12tDuwZzspXmfCGGrG2uZFXQDssWPYccT1zDDVABbyG0XyH8BT6M/cHMSkZIwbbho20dmrHF4076NmUOPfeQz2cZldskbfKnDOvxo+Dc/XK2+zimcfri0tjUUQpQfUr7ResbgsWfQCDO+AU4Y4QI0c8nwpHIvyCwRUE2vxu12cZ0w9U1purWTFy08HXtRrV2KZuLJ8W2+6IhFkDdBtWOIe3/x0aKA8WFckOmVXKFff1Yczvx6qOsdFx40W/3ZvaBKsdmBPx8NilNnpbgJJlTahm2G8Ze5a6OpqtnYJcl+yNfDByz4xyW0ne652kOmyBQ8aPNOPfTKXdZurIl5HoNSV2HXj3mlXrLxGxqG/hFlRNALBxA29KG6WoZ733jtjlnNzt3N5WXDbfOcS/WRS7/kAlS/yApTS8Kfk4zc3hJmoVkn02uYEUOi2LfQp+eUsP0wY1F5sSbQJatc9S8bhHMHbHb12NP7B4+YTnZlB2LIpkyXSkhFZj0hcoLm3v80bp6VV5too3fgnlo+wDlrtBUWIjlzJcE5osWDihuQpYwC6es55x1GP2QDshpXVb1Of6G/i+2XrWGRcj6jagSYpVTy3JyNOYeFkG0h0UcIaKjQRNMjKZEjXb/DmlT52iCLu1jjWGGKk1JeW09n/biyhBTbeP7jt16c+dJU+zPnw6blEJqoXCqMGotWyH1HiDVaOtUMPvjhgrmD1TV8hW2Qc02zYk/fCbv/drjw6MFLvZGBYJ90MKPrbP/BWye9Ge6JJVV78NVul3qf22NnWK5/uELUByv8/ylOZzJG+ExfscbmGAzDLC5YAprMHP+5xUGIqtPu9Z+vW/T0kPAGmzTHc+GZFgTbWmk93X9tD1G74tgnk3QdaxWGBocX9O8zae6VgVbuD7EalvEZg66k/ZknRyhNGhPoNMYy1UmTt3DQGn5Kubq7Fn+MPXom5D7nfIvvIbliH+MMTt/AeZdnZ4gr89bMmPKRwc+3rxDTTU/e/9a4E3JqamRevPWlwJFeMAeKU240kDgrG37pvnev3RkTdfwiJ1nf0ymUoZLg1SwpKg8s3rt8is20z3f77DlidUZMdpZf9nyXFnL2Ntqvd67SF5efW8K22/fXqGM7UxHP8iTuu/iXXL1Dq8hiAP53Dg6sDnk5PJWH9AlTUTx5u3Mwz+Vv81DUhpQed3fvRaoRuBuaBMabMyyHB5/KrL9sOilxcE6dWPd8EV6E81j981TY1EkswmZPak/UMbeHB3+nD70pXhX6Eoyba0cV0qoaKue+cvFVrIwsH8xZC02il5Q4QLIRYBwQATNPh1kTTctHvZFMUy76NKCGDQp7eiqvjc9BZd2J0p1/fHa2NXUbB/Ycp8mHXBoFkdoNxy1cdr67V97uN5rHywrTHixAO9JRuEX941jqe6PZjra5cXoCqz5hiRNhZBLOg8lk57zUv9+hbNwQWSU5dvfwnYyFYKEiRmPzbCqsy97ame8/S/63//0+VQ01rFcX7665qn1P6QJoaZ846gRBxWzbZVuvsT04r9zSels71b9DFu+q002TbFy9xcmPlBq0Ier+TpsRWtv04jX8Gz2pFRvYruP4C5ssyx/6P0WPlo189RH9QebbGWFJk4nHo01t1nLx2tc6hsONUIXS8g1Lb9ArVg3KNk2ZObqpcSKyzXB25ZoG3A96unLl3rHtxzYfBzNSl8Y0A0/wrCv5+oe/YSP9UVDuRf2KRqs43XRbcL21tS85/mGq6zApsnre2Yj9eO/O2stbEhrqVQrovKs+7fBcmecOeF8rDa3/fXqMmUnRqnblslKyo8Pj1W3ws+r1vEjluVfSEPqa1a6pU+xwU6zcI+3U5G7BZoW6GtC5Y4BTmWzZqyEWQzTijQN3pMDzm0+Okoftvw0U4lX12I2GAD4003HH0qusNl2WGTnWoeGhhJ2/y8Usy8qm23V+qby1jna7u93+9Jc1SzVLSMe7Zk+qP16Nt7nPLWaMba0tWfT3xJrH3ZJJXovNSFQkg+0bLfRrdF3cEKHHKOhpkvOrGvEqVUx5UhvtNvGa0bkauvpYJojfFPYHNidq2Zc8+4c+7OJjN4kvZ4vVOXibuqAX8gV4kyrmw/oxzQmodNXqHCKYG50Hzj21I/5Zh7PgJk8njJDqXFGcGJ4hxIzrR6rGfIuXlEZqxBVrbTfhwnDC+yAoPgp63cGgqc7oWV4GcG360aHs6H14ru4LdLv2+fW7FjFsvBDXnqJewYgpv9Zk62Y+RRP6MqUDziCfiOKfRp3xnfspZqQx95ZNVvlzvsuHGiRh1Nr2nM0G0ucc/jvly8OHGQVm8rWXuxh7jw/lm1/9LaqLitIhmusN9IFJ1xqoc/6+w+Zs6mp7HVLwsI0TiV3IEY0GYXp+raMRRrM0R8MDHdzNCVxcaE4fWTWLgzuhiPeSRhk4S7fOGmQWDoEZFqif8BF/Q7D39vdKhm/1oL9Lr0Cp4wPWeZW6lbmGrnVuFRsRbkr29KqYzOe+m2WHxYIgzm/n9sio+1S/XShJJyqA3zIvEVNXaSlrWRPRlb+oRYd/Tm30w1pgUsIzUwMKlSPHWerOacRGZzNeEAfzBmX4Z/9+eVshsZnRrRfJLdICJTcZGN4tzC8p9t6eGO9vs2l8VwzWSw/OeiWLLA1JZkDG1BR9IDwwLalqfB4a5pqj7W/a+KNBuEmsXT9htCs/mD744JYNVzgsMGJU5HNRcDc+UUVLO7T5mgUSJ5ndytSISNdQIeosqWqXUVB4sBeCs8xpLcoXHkvTxfKOpc5hJwhACB+O+fvJXbJrvn6nZiF08WdwK6hzdYQLEIvehV83iHWOvTkxOcYYksdp5qVm2V3HCh6ysrY1c+fW/Rg0SkA/iGKvhWsNn+E9XOxhH10RPWiDvgcXqhkp6jBjsmGA/aiF3MxH3MxH5uQEgxOKax7hnkAgwxVBAE8i17syocAuMx1sEuug11+LnbNe7sA9AJAF3qxDi4TwIYAZmE1LPa9XVjCnlEuhn9DU/xijIwYtk8xU9pedzvAJrxROl6ZAvQ4aFCXzsZFHLK1PgbWqqAdVDodU10fD6cQ1EV40xphtbBkwVuVn3U0ewbPdXTf8D1mWANtRA4SHpD+YHTVlREQNNy6+pPTDrR6BxXySy5BOAc2RL7Ac7U98Z2BNqltGamfqFQ5x2XH/kWrspW6Spb71L5kCZCVteaqFtzOt7BOL9jSB9q4RkE5llN7obNLufoVfuow6ugPcf91+ZnMEJ/c1Q7QFcLXbBRYGWgjDJiOZs+0gxuuTOeqnKbtu3DgPKPbjJSfK5wdCBIU+Qpte1IiADvM6kCb3oymHWMIFx/xoYXNIdbSKx1j6R0/f7cjP66xP32BJjX03GuRf+FfvgkZZihf36B6I96/88wAkxR1+g4cBOfqtmD14UnTM0sO87miZVkWO6VFUEP3Z20DM56ZrfSMjHV58UkATncIEE432LBnRgJ0VeerrkupxIWZbPVObRetbmzv9mt7ZnK+QP5028i5yne85eiQ699vH/DMQPnJOacnA3mF9Zd5UQ22jmdma2zqgrcXN460FS2cuW67fraYss96tgXX8j3ey4EGZFMvWeNlIhlFVQeLy5QGki001l4tdkdOBwLZiMcrZ0plrBcQT5ahWgx7oIEjOYz0lH8osZEGbOGANBySptCWS/oPyATHrKM2VmaB9Yrb/03fsFFeDs7cgQUd5yiiAI4YsvGg8Ag9QIM0mgqp4az7KdJXaKspUo6ZrVfl+svvUVqxOiXhAQwsJBDp3Wn1o6KDEwsvyKNLGjhnj2zaxr4PUGwR7LQdhvXfXY2miUa2AKFjUwMNxLBQgNO3pVDhuvWdWegCOqggjb6VGffaq3cOzbZGgUF9HrqsJzxV/dqzPoW4wvYcDDxkhbVP8i9/jXa4BhEgcEgDdPNrRNBB/mh+Ud9C2og4NMIEmPWEA5obRRFntIEHce4bt4mfR28MGU9Ej76+bsIbUHSgd+UN594LSKMgwQejiObdXykMGTBfXYym33rCA/B8Z8PEVLOWOpKBBfnDfW4b4ewlvSQWuLAzrzMQM7q6pGFR2WxfpznKo10yiFmjdeCdP+a2bvEuElQaUqvJ3uHanEp7ZzEufzLV2qSywBruK4xuQ/bMvMZUq7f/kK7CWXOqCELzU+SZjW/scjp70hx9pKkVUg10/7PfM8Nj/h8mNDXlewyzbvooHTxz5Sf8hmqGwTpzVgYIbHtmeOm7/y4UkAmmTfVZNjxztflud7/6shkIXDymC0uyL193v3ONhmn/HVjnJdt4DBxOz/SXdIMDvQu9TEu22az1dsFfwV+yzfPBZLm2smQbPNdKs3m+Ky/p1uXOTDOvIpxjyaoo4kiQf13Us/Omv4R6+yxT7TSHxV6t2IRCstV4USw8mjhrMA6LViwMVRJSELQzzJqosV4UKV5tpSn2gPqEuqZbCGOV0khXkmbZboGCJyL0bJolAoJkhyvqmQBFgmnTFbkqPfURrT0boiCKOeG+2vdO9CfVhP4B0/T1q2tfooOHDDLwaIyLgUrGXnv67eWHXbKoIOvdqBbDNMXuKzmVvr9jVooQPt5toLvrJ9PvXeZtTeTmz2g86XnbdpiFJVOcT8P9IEXh1WrSENTq/U5rPzHjdq/NumO/WjKJaU/Y1ep/vH0K/eAhRTLKhGcTZPYA6IYZXsL0vUWGvzzHPJvlzLocK2Y2AL5n0+n/Tv9fyt6nKKo1YKA+EoZkJuk9gx8PsWTAsgBTQ/X0NLfDiqssppMJyrFSSqXtDTLQlIbx2CrO+mOdj3IA2zOKot+L+HN5+htGep4ZGDR5Z0ARVL3wz8X2KldNxaqpIK6iqo31BhhsLmkMC8Y/11uV1bQ0TfPpTCb2AOdk1DNVF0Rk5MDDSYOaQq22Of45oQ7bXqdK21vdfOeNn2vk9xkNhHbcJPcVDfZ638j2yJ4a8Qq+q4aTu0o03/0CWsOpVJvZvocBOPLNg/AFA5yZ2updpnXt1c1mhqTB4E/zCNoDa2UEtsdJ3E9g+Nynv8A+5UyZD3ZqVGiObP+Q3emgvErFG3u9S3P0AjPUc2ufgMMSFHHggvJFrXxGVxBkBNLA+Im+CCqKdYARu5tCfcPk4pjGdi9fAvBLRBO8otxO7L5PSOXfO8WVBf6qzekgCJiuTpTCBUsjiMFGfocBzSImPpFCeAVp3BCjfPTICelmvXZnWnEgMmPMQPsgj3yNUJZ1LO9R26MCyAFZBsKzmwOqbL5Nrv1bEAMwxHwMaJWYzuYMoKUBOODpWCmLBLuPi57kgd0K/nPmQA8RnEaUFW7Y9vTTTOcYU5ZL9W2uGgfD9c05Qq4DQOPAk11pCozIgx3UfzBpPoPmBvHYdl2ZaVj4C7rZPqIQrH2qZO+ms2UEthe3eVJMWog3FxTCsvsyBHS9KQQjgArgWQxQXhkYKwwaaSz6dSNMBbvdO4QO+4FK+4VjR3RvkCyg/aKBUkafJ4/QJXvwqg6mvLtxgTs7hZxTkBcekpJzU3oqmRgwU3P7bV/Sir6VPPh4+xXFF0NQx4AfAAnDQc6FHSJgsWXMAWzaoVvJffZE6SCLaZ7CnfwD4fSNv6vquBUVNAn2o1+cABF3gmMk4kIh8PxxI1uQDlhsUr4f4JSdKvV+EY/ArDbcCkVYM+IO9f3kHOv/PWmyR9D8l2cmxRKoRIQyP3bAACB+y2pqXrdlagctnANTRZB63X5OO1avqaT7x1q+uvCQhANzjcsgcp4ndXVNNRRbs1e20mBYnc58zwWxKjyQ0pOSLi6uzYEtF0hiZFxgd5cc1oWDmErv7Xug6NcBxpJ6uGCRSiY2nUP8YtkxuhcbJJg0CH8A7NK1DiGd0jURlHMaW5xPQL37nMvCoovuJ2HII3FfQdIapMt5V+lcmJUYQilpMcZq8B3LWMnqF2SUCDXK6ytqHZqlrCxBgPI/27PBCwWeMoCyBBBn79DMJvpqFpjgiq/O7P04Taiu6JAF5G5zuhOSzRqq/0OD3ZagDlOy27CjtpEmySYKCRtThQCiYhrv0JBrM5jfkTnW/zvH///j5LZ7/Ys3fuM5wcfwuxC0LwHcIuA40L0+RvK0pxokpwiyCFkqcWAW2VFCyFKc8GHIrCc+UAYbqrWKA4MKVkEWQwAe+w5wr4UnSyas4e81L1aiphBJRNZuCg6o+QJ6+h4Wo38yZ/uFB1ep36jWwZTLTG01Go2lE0lYEMY6zG6I2c6Xhl17KykZhfGozzwbb/VX92mSzwJau9y7QMoqmzwTW0lEtLTBZLQLlOeMZvuDr7Do2zkVlIZruPBmDB7j58H+PIXZMxbLK5zyBtdeRdioPsn9nCYTFE8/symZxbJA4vV4XpAZt6XN57MTWYGv2ve+uG7MNzEG6pnY1n+Iw3ZHp4o6skPfSEzgcUhxSZUcpK+SJUf8UTBPT80C4OgaJtPQrRgAhAOG5GcT5+QQIA/LDMrq1koi2OlxYZ7+sDpexFWXthMHWe0vvJcNQqYQ2Xq7mvADTaYjWVm2+rUEVF2lrf2DwkwKT+5KgJDUICRboBI5bLHimHsYcl2zRf7fN1M+cztC5eygKZOInRVfqoasv7wO0wd3Q0kr6HfBvKIFSmspnwQSM3yd7W7T4eYu7lrKO1y8wa77V5y13Lg6lKBXMbOChB1LYx6m0sSzuNgs8iuDQiuMAYoO9Oq2SWnOgXzKylsW8NtvbDmUZI+ZTcWfbJBWTo7hx9iO4qcA6KQkrKAzw4FlEWsMAzLhvRoqc//QlSwjafleQWUnmYICY0N/3CLSWJCgs1yprUQuWIcMAlezh0l/MhIpkbHZ73H3hNouTHsXrUeyxejBdH42D/IzFkI6rYY1mN/3UreK2R5t5Swl5FDrTPkUlPYh1geocKttXPel1jnErCP05QVt9+/2Hpbhm5Vl65LfrHzduBjNQdeufd+lJW3NS/Li8f9mYc4CVmqmo0SqKKpr+wZ7159uNA7ypPjylnZKdc0X6lpbTnG6vTUujmZ7apdUWjc8xincFWjsq5XVnWyX9Vqz7Ytw39r04c5VWm1nEDOg5Cu9RX9ekbk1fJZ3AJVE1e6OmKhi/FKayX2pm3OKvoKgbrmuW/DR4bH1mdb89ZHIbP2oh9TIwuzVpJAQh3y9IGV2MzQu1pDqwzpFay5ZomhsLydZzZBqGMAV5DixhDI5AjnDZmJbHpffHAnJioMoMQjIn/W6yRKElqBEbAhr5FxZOszllM9aoYgbVuALHhWSx9lnDl/YJK2AAfOaCmWWAGK/w+TttYl1UTncvpz2WWOSX/APUQNrWZeQBOE15Nb8ChfOn29n/E/OHx/BmfL3M85BsiAxJyjpP9isFMp6ozWKSRaQGmp9+7JPV7XzCVXu8m2Wdhce8tjf6dZlGqcrJ3yYaM2L/q4uzPX2pB12Mu7JReywQQPtAytf16D6UNsMmM7SdoUpREnNbHmy58I/5vvkKQ13BJYTkERMXREP423M/EUvyZuroU5pQ8TQUOs0lZkBZaHhEtl1OVkPU1RaDeUSKZMXGqrx5H2fufSI7aGoNGBwcoUHhUZKOmlzfbVKiogG2dJG9+6vcUYOdmp9/wxmXwmG1CqhWNQ6xDC0UVJJqYK4QaFYDIhRSE3764iCqz/CWpIdMi9oJWrPqoqy9XIKrRCWx2J7Faa8wxJJBCwBPk4VGaXCe4xBDCkqo/2uJJdbKiwJYGYY9moP8VtgZkRaIlSQfoFOejtIeId+LYTq2b9dqeybVpL+iBOF4d41QiWpOrr1+NBosJrgau9qP184XayJVXoxLrtkUVqRNxilf3xhIDMNMIvdAzdUzCaba9Q4F5c0jc1Dsq0WeLS6RlNK2ldUO3Ij3bqt0XJ9k6JGG6d+oZtuRJWQHJxPRNWIXiNsF8Fq5fmD4pwgWRn39/5mm0/ahuVvLTSYiyJuajP+bgK94eQc5EcXtyLhTuRJGrYOtFoNaQuY2Asq6wga+/IE332ojGCPv2uga6nkK5DVUwC/odqktroqb1B3/NSldsf2xIInw6AvwYKOWT0Z+LLe1oH701IuEauKaIBdOs6WOEgejeS7jIH1sFr2OlKQArqZkEpoO2G5UstjB2sVFGqFlCOaIEkcRZT0K4GSkoV68PEnCPtOVDsMiXwpmRk55pmxSL2inHyG/yla/JWA3yyiWfJ54wWUkbSXEV0429oeN+WqTua2/NgCZNueZCcG2wVuh5VuLLu2TGg9ThIsK7CP2gvNVMtcRlDIe1Ap1z4q9QmCWVt2IUwTzlDj3ZvUnHQNpECfYnDW9cnYuma2mJOykkNrCw0U4ArtOb2h0YaRujhTDYRwT20q1ccZKDxYTFE8/ZiX8tdQn09xvmeXDeMrZM73e5jhr4HoNAGVlGr5OJnMfC5kCNycMlVUc1VS7VLkJwrL55stBaL/xD+plnx/S5T8ZX5Vk3yFEOUHliCixPdSimwDvmxrJToRvxquGFa5Yy2JLBlprF4KSciKybcHZNvjvECKkH5lCPFMwkTXLCEHlHmzCfyynCL4ACsotoD6D/Ar1xd/ZQW8lPKX+pn6WdNXgDeh/tEPXJ/IdUnHpGsuDSVJr2OsaG1OxOUV45etYKy/p6A+Yh/MlRVPuro5G5n+z65bOj5Wly2ftblWjtjV7GzHbOhTtI54V3E4wRkP7QIBnZOWhsFgEsyyZwiS5TH9Pt1SJ1UaVM4bXJI3zym+1WIWf2gzDdLeIi5ObeyytmpIsKkSyh0r0LREJqRamz8qpyguNdHI0fIeV5i6TI/kKfkvJbVigWY8xXYFdJfrLqehGW/RS7+BKuR/3qNeZaO5HWjtray6/UNHGRr13Sdw7zfxGGaLmkPFWmiJ5EYXn3MQGiOVl+5dW6VKqFDEK21EkdIcKZeH2WvY49KzrqE0QD96BfF1txdPtl622dKDoWgDqViokwXL+x2RlQLlG7/d4VUTK5Gx3BolI6kTjO9XLoA0bet7pUVgKz6osDxYWvEFbmnFAHL4xxHh7ew/8NHUEubFgXLyAyyDlJF22/lLr7YG/rC4Ghpjj0MbgSn6m6yJJS+0MAmlq+NUKV2AdCpKw92X6f+d9npfQQVr9SzFT979nxGewarekU/+blRlTwzl11bOVrd2exPC9LUzNOzwN7Tdr7nGutuW6SKpozK/GQCz1skjH2kbBE75Wocn8xl9gpzhLu9w7iWHP//YlzTkXOV5h46+QKeGkt/glXKFaHP/6V7cV6inLnPVFHmP0F3BVa5wCiE4qj6mKNXyX3s1y25oVCpzfrlhlamSudrlhqo5KyhKKZX9QGWOrySgp1ypKN1mxFKbGNM35q+9hQ+4lVIFfc7/Kdp+TPYBbotjhL2qCRtGGFH2C/dawAp5ZMPH23yI9HJLgFENsv/TsqHEcrKBgw80JC8JooVnkgCbxRA8gWsNS607XlXRU4nkMLAPb60VoA/BXEW6m83hoGb2UvLJL/dABzUWjyOA+P/l4ib3u749IPzAl99GOZ2Zj+mjR6L1kibicrXwanImKK1tr6YELFve5O6UZGIS+WZyLRIOQBCnSGFefd2e9Tw3rQ/1DVYK1igpq5EpwdfOVNxcjSmb1U9IU9VatwE9JajDlJCL8iRKdSlhsbIlfWU21zCu7Vh6u5hybPOR0C0S9+HEwpi+Rf6OTK2OxoKwMWneeZhKa+WuBTMVXxiWCiJIlWIqzJaGQgEThuMqzDxTuZGgBZYz7yTDZBJZaTqAYLmKOYblDXxL74MsPoVci5gB1gGgJX+VBRGRT8PQeCfArEOsgDgmt1xLpMnGiY+xlNq/aLOF8MSfCvez02nBVEAA+8NkgKGjLwumhMBhmmw4sWIVS7folC2Qo0soDCpMT5jK2OPLIQygMA+kO7IYECWg/V6fvydOvuMBxVBNEk6lmq96/kKB6qDVDN6CC0XgXFFVFpzX0va+V5Jm44wI0MgrTI2JxWBvqFo8HIs7A2FYTEJEHVhGUuimStMLWWDZtvPlXU2o7QYgujQEcJCDJi/ZhT7SLRuigIrZuuD56E1xt/AAzyBrqkMp1TpmQF76VRP3Ut5HS+EqWzbJBPgrPH7PZyudt7WUlcbKYBSSAJ74s3c8clPE8HbinAAQwOgCeS70lOVLiS8ISUNSkV43LgfZKogSfyesPE51Mqy+HkcbNZMJjDHmBCuvoqgDkAqKmWaJsnJ3ntUUkCfBIoauki16KmBDgRtnXJnnYExPTOZgpKZl9en5fuJCTCoUhMCE/rjgtgETBkxIURDZQlv/PmWFoK7ZTf5VlgqMxzuiw30UBmYTHqAjgcopQBU7B1UM8XaBwbZOlqP3KUYacKb5eRMO9SSLKJ6THrIK/LcAlbNI8XcOxGcENucnU76Th4LUol9AeR8EOEyPXe4AE6fCLMx0fVjwI1TKDY/GyLZvwV04OzvYUJEOhOkhrKXxQrrQZ5FY1Zl4n4wusKbYdCTU47OtODYJTwXhFMwH5GEuCDO6tt3xugkyhukMIMVmgISNBS4OxjA6YAmysTOAYSmeBwJnNjfsCIoBGmwVrKeMBCDTcwPR/qyt0/DKujB916b+HKypeX9Y4pBekJGEVIDlQhU7egmAo6fGuUunATZUgRMIDD1va1sRvgBEsJBMJU7JJi17Q1BKKcjWn+sFE0M1wGS1i/8QoK3gSJBP3ixEqVBMrneVOJNkMXT0WZZ+vJLvaZmsD4mIO54KmCRuyclm0VMpvmcnLXJlUp/5tFUn4nMnhpBmz8tRu7RfwWW+3VWEg1AxPT0QCIoX1wtmtoCVkWEykqPULlVP1IE3OPKWgFxKr0lT5QhxvZNTV6/+loBh6UmLj9jcjkyH3i6BM1hJI806K2TCS1uuvPRc9ud7dhLkwJuMVP/c5OnOPRJvsoF8WpvLGMLyBlMVUo0uytOfA5EYJj4QsOjTdckbpOHIwzq5C0o671tvd6Nf0GBHNTmRvifS7VBPnzLGkd8iegbpQycsTcmC5erzKFFeq31wEYQDlPT2yt+2MWQsGeNESKpgI7MnF005S9xd6vAQHigK5s+dCyMwnW4JvHTGQQ6QizEHua2cFJSfjSQZZnYa5eSke8gKIoAzJolyUJjeWwgR71kW4gd2IQo5eL2hzMTAdDvzOptrzZ0PHx7rnLRXmC0MTdvzOUtJkrKfjgGmITjorfqCFYSvCwCcMXDmzwVR3u6f6rlMwJGw8GRY7FtpEaSdOCXVcU7bBRwd0Oz8XDVfoJdEd5WH6e4/WPc/Y2xkhajU0IK0bUU7WqVDi/kW/twn25kPADoOrC9wAfDpToDWB7BtSKsdNDrOgXMUXhdWQ8eJYoUON920IIaB/y90Sjq0pHfKcvDSD9RuuISaUxGaq+itb1uMdfSpwTAW988PeJ7b3ZmvM0A4gPmbgrzRr+M0sNgbMfdnhit6awMggtn1r0geCT1ghEkDj/3G9Q6QyM7yptl26VnYJf8hMAu75HaxizcKYNewrWMF/MXL3K991zekw/SGnaa66P9te4oLVNCkybSUJ28u6NPUv/abe0bG0YzEcccXLO4AFP2CbQD4yNjF28Dicau33uqtWZ+59gU7PQeZPZBIrQJfhl82EYHePW6NxfO/tezCHW8Cfb/Sm/xpkYInws1DSGxvICWBLneMt+6c0Euj4h28zc11wZvyzzo62E2EXmxCb7Iz2+PegRiKWiWZMyRBd3J7eKYlxlb57J2w+6h++lXw41bCDwABedxk6fEuyexi3cPvzfZEmv2IyikuOD+F0BzL4ywTwdvzw7efpooeHHgV8RyvnZ0/AwK9/GMkwSHWT+gxs7kksbtG+OYEtwG+LSHv44jf001+OBZQsTvhDTPmdLJttqeQCgBonzOCAF3ByaPFVapVpLHLVgiYhhHD7ibi2k86d+05mUm/XsL8UHxKJsP2TCRPHoeYxpxsXwdhbnkMdNDXJIIYDnaAowmEKWvMh4+RhU2CZvGsDR0jfs9s2V3yU/Anrp3+gf56Q898ccaBYlbDtzsonvQhOuAcKHZssDnEEmAQTZ/Z/ucBzqwBAdLYC4FqKPA83XjA7rZ75QlCWbKs/cQwrg+ZdofnmXv7Wg5295+3G55wfa93ICOfkm5GC8ZYT45TSEYyBxg/EjEGvIfVuvoCObmNNHT6v9P/nf7v9P+lFBk=)

**图：SMC 调用架构**

SMC 调用包含以下组件：

- Linux 内核：

    内核中的 SMC 调用驱动程序负责在 TrustZone 和 Linux 用户空间客户端之间传输用户空间请求。它公开以下输入/输出控制 (IOCTL)。

    - `SMCINVOKE_IOCTL_INVOKE_REQ`
    - `SMCINVOKE_IOCTL_ACCEPT_REQ`
    - `SMCINVOKE_IOCTL_SERVER_REQ`
    - `SMCINVOKE_IOCTL_ACK_LOCAL_OBJ`
- Linux 用户空间：

    用户空间中的 SMC 调用包括 `libminkdescriptor.so` 和 SSGTZD daemon。

表：SMC 调用模块

| 模块 | 说明 |
| --- | --- |
| `SMCInvoke client` | 该客户端通过 SMC 调用驱动程序与 Qualcomm TEE 中的可信应用程序进行通信。 |
| `TA client` | 该客户端通过 SMC 调用驱动程序与 TrustZone 应用程序进行通信。 |
| `Libminkdescriptor` | <ul class="simple"><br><li><p>该模块在用户空间客户端和内核之间创建了桥接。</p></li><br><li><p>使用 SMC 调用的客户端必须使用 <code class="docutils literal notranslate"><span class="pre">libminkdescriptor</span></code> 与内核通信。</p></li><br><li><p><code class="docutils literal notranslate"><span class="pre">libminkdescriptor.so</span></code> 可从 <code class="docutils literal notranslate"><span class="pre">/usr/lib/libminkdescriptor.so</span></code> 获取</p></li><br></ul> |
| `SMCInvoke driver` | <ul class="simple"><br><li><p>Linux 内核中的驱动程序与应用程序客户端以及 TrustZone 中的可信应用程序进行通信。</p></li><br><li><p>SMC 调用驱动程序源代码位于 <code class="docutils literal notranslate"><span class="pre">/kernel/drivers/soc/qcom/smcinvoke/smcinvoke.c.</span></code></p></li><br></ul> |

## 后续步骤

- 要了解下一个安全功能，请参阅[访问控制](https://docs.qualcomm.com/doc/80-70018-11SC/topic/access-control.html#access-control)。
- 要了解 TrustZone 和安全框架，请参阅[安全架构](https://docs.qualcomm.com/doc/80-70018-11SC/topic/architecture.html#architecture)。
- 要了解可用于与 Linux 和硬件交互的 API，请参阅[安全 API](https://docs.qualcomm.com/doc/80-70018-11SC/topic/interfaces.html#interfaces)。

Last Published: Apr 29, 2025

[Previous Topic
存储加密](https://docs.qualcomm.com/bundle/publicresource/80-70018-11SC/topics/file-based-encryption.md) [Next Topic
访问控制](https://docs.qualcomm.com/bundle/publicresource/80-70018-11SC/topics/access-control.md)