{"id":107815,"date":"2023-02-10T07:00:00","date_gmt":"2023-02-10T15:00:00","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/oldnewthing\/?p=107815"},"modified":"2023-08-07T13:46:05","modified_gmt":"2023-08-07T20:46:05","slug":"20230210-00","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/oldnewthing\/20230210-00\/?p=107815","title":{"rendered":"The case of the <CODE>RPC_<WBR>E_<WBR>DISCONNECTED<\/CODE> error thrown from <CODE>await_<WBR>resume<\/CODE>"},"content":{"rendered":"<p>A customer was studying some crashes with the following call stack, with function names abbreviated for readability:<\/p>\n<pre style=\"font-size: 80%;\"> # Call Site\r\n00 KERNELBASE!RaiseFailFastException+0x152\r\n01 combase!RoFailFastWithErrorContextInternal2+0x4d9\r\n02 Contoso!winrt::terminate+0x64\r\n03 Contoso!std::coroutine_traits&lt;winrt::fire_and_forget,\u27ec\u2026\u27ed&gt;::promise_type::unhandled_exception+0x9\r\n04 contoso!`Contoso::UserInfoViewModel::LoadUserInfoAsync$_ResumeCoro$1'::`1'::catch$128+0x20\r\n05 ucrtbase!_CallSettingFrame_LookupContinuationIndex+0x20\r\n06 ucrtbase!__FrameHandler4::CxxCallCatchBlock+0x115\r\n07 ntdll!RcFrameConsolidation+0x6\r\n08 Contoso!Contoso::UserInfoViewModel::LoadUserInfoAsync$_ResumeCoro$1+0x502\r\n09 Contoso!std::coroutine_handle&lt;void&gt;::resume+0x16\r\n0a Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n0b Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n0c Contoso!winrt::impl::resume_apartment+0xa4\r\n0d Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n0e Contoso!winrt::impl::delegate&lt;\u27ec\u2026\u27ed&gt;::Invoke+0x15\r\n0f Contoso!winrt::Windows::Foundation::AsyncActionCompletedHandler::operator()+0x24\r\n10 Contoso!winrt::impl::invoke&lt;\u27ec\u2026\u27ed&gt;+0x17\r\n11 Contoso!winrt::impl::promise_base&lt;\u27ec\u2026\u27ed&gt;::set_completed+0x59\r\n12 Contoso!winrt::impl::promise_base&lt;\u27ec\u2026\u27ed&gt;::final_suspend_awaiter::await_suspend+0x74\r\n13 Contoso!Contoso::UserInfoViewModel::LoadUserNameAndPictureAsync$_ResumeCoro$1+0x715\r\n14 Contoso!std::coroutine_handle&lt;void&gt;::resume+0x16\r\n15 Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n16 Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n17 Contoso!winrt::impl::resume_apartment+0xa4\r\n18 Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n19 Contoso!winrt::impl::delegate&lt;\u27ec\u2026\u27ed&gt;::Invoke+0x15\r\n1a Contoso!winrt::Windows::Foundation::AsyncOperationCompletedHandler&lt;\u27ec\u2026\u27ed&gt;::operator()+0x24\r\n1b Contoso!winrt::impl::invoke&lt;\u27ec\u2026\u27ed&gt;+0x17\r\n1c Contoso!winrt::impl::promise_base&lt;\u27ec\u2026\u27ed&gt;::set_completed+0x59\r\n1d Contoso!winrt::impl::promise_base&lt;\u27ec\u2026\u27ed&gt;::final_suspend_awaiter::await_suspend+0x74\r\n1e Contoso!Contoso::UserInfoModel::LoadUserNameAsync$_ResumeCoro$1+0x1ea\r\n1f Contoso!std::coroutine_handle&lt;void&gt;::resume+0x16\r\n20 Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n21 Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n22 Contoso!winrt::impl::resume_apartment+0xa4\r\n23 Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n24 Contoso!winrt::impl::delegate&lt;\u27ec\u2026\u27ed&gt;::Invoke+0x15\r\n25 usermgrproxy!Windows::Internal::Async::HardenedAsyncBase&lt;\u27ec\u2026\u27ed&gt;::FireCompletion+0x154\r\n26 usermgrproxy!AsyncOperationBase&lt;\u27ec\u2026\u27ed&gt;::DoWorkStub+0xd8\r\n27 ntdll!RtlpTpWorkCallback+0x192\r\n28 ntdll!TppWorkerThread+0x639\r\n29 kernel32!BaseThreadInitThunk+0x1d\r\n2a ntdll!RtlUserThreadStart+0x28\r\n<\/pre>\n<p>They assumed that they were running on the wrong thread, so their proposed solution was to add a<\/p>\n<pre>co_await resume_foreground(Dispatcher());\r\n<\/pre>\n<p>after every <code>co_await<\/code> to make sure they were on the correct thread. But first, let&#8217;s see what&#8217;s really going on.<\/p>\n<p>Reading from the bottom up, we see that at stack frame 25:<\/p>\n<pre>25 usermgrproxy!Windows::Internal::Async::HardenedAsyncBase&lt;\u27ec\u2026\u27ed&gt;::FireCompletion+0x154\r\n<\/pre>\n<p>The asynchronous operation completed, and therefore it calls its completion delegate:<\/p>\n<pre>24 Contoso!winrt::impl::delegate&lt;\u27ec\u2026\u27ed&gt;::Invoke+0x15\r\n<\/pre>\n<p>The completion delegate is a C++\/WinRT completion, so it goes to the <!-- backref: Inside C++\/WinRT: Coroutine completion handlers: Disconnection --> disconnect-aware handler: which we<\/p>\n<pre>23 Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n<\/pre>\n<p>Upon completion, the C++\/WinRT library tries to <!-- backref: Inside C++\/WinRT: Apartment switching: The basic idea --> resume the awaiting coroutine in the original COM apartment context in which the <code>co_await<\/code> began:<\/p>\n<pre>20 Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n21 Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n22 Contoso!winrt::impl::resume_apartment+0xa4\r\n<\/pre>\n<p>They key thing to observe here is that we are making a call from <code>resume_<wbr \/>apartment_<wbr \/>sync<\/code> directly to the awaiting coroutine. This happens only when the apartment switch has failed, and we are intentionally resuming the coroutine in the wrong apartment so we can report the error.<\/p>\n<p>Let&#8217;s see what the error is.<\/p>\n<pre>0:024&gt; .frame 21\r\n21 Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n0:024&gt; dv\r\n        context = &lt;value unavailable&gt;\r\n         handle = struct std::experimental::coroutine_handle&lt;void&gt;\r\n        failure = 0x000001c8`6f2f0f44\r\n           args = struct winrt::impl::com_callback_args\r\n         result = 0n-45104688\r\n0:024&gt; ?? *failure\r\nint 0n-2147417848\r\n<\/pre>\n<p>The signed decimal number <code>-2147417848<\/code> corresponds to the error <code>0x80010108<\/code> which is <code>RPC_<wbr \/>E_<wbr \/>DISCONNECTED<\/code>. This means that we were unable to switch apartments because the destination apartment no longer exists.<\/p>\n<p>At this point, the code starts to spiral.<\/p>\n<p>The calling coroutine is<\/p>\n<pre>1e Contoso!Contoso::UserInfoModel::LoadUserNameAsync$_ResumeCoro$1+0x1ea\r\n<\/pre>\n<p>and it doesn&#8217;t handle the exception. Therefore, the exception gets stowed in the promise, and then the coroutine completes and calls its completion delegate to resume the awaiting coroutine. The completion delegate is another disconnect-aware handler:<\/p>\n<pre>18 Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n<\/pre>\n<p>As before, the C++\/WinRT library tries to resume the awaiting coroutine in the original COM apartment context in which the <code>co_await<\/code> began:<\/p>\n<pre>15 Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n16 Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n17 Contoso!winrt::impl::resume_apartment+0xa4\r\n<\/pre>\n<p>Now, it turns out that all of these coroutines run on the UI thread, so in each case, the C++\/WinRT library is trying to return to the UI thread, and the apartment switch fails, and the cycle continues: The call from <code>resume_<wbr \/>apartment_<wbr \/>sync<\/code> directly to the awaiting coroutine means that we were once again unable to switch to the original COM apartment. Again the caller doesn&#8217;t handle this exception, so the exception is stowed in the promise, and then the caller completion delegate is called.<\/p>\n<p>One more turn of the cycle: That completion delegate fails to switch to the original COM apartment and once again resumes the caller directly in order to report the error:<\/p>\n<pre>0a Contoso!std::coroutine_handle&lt;void&gt;::operator()+0x16\r\n0b Contoso!winrt::impl::resume_apartment_sync+0x7f\r\n0c Contoso!winrt::impl::resume_apartment+0xa4\r\n0d Contoso!winrt::impl::disconnect_aware_handler&lt;\u27ec\u2026\u27ed&gt;::operator()+0xd\r\n<\/pre>\n<p>The proposed fix of switching to the UI thread won&#8217;t help. In fact, switching to the UI thread just repeats the problem.<\/p>\n<p><img decoding=\"async\" title=\"Office meme: Pam shouts, 'Stop switching to the UI thread!', and Michael angrily replies, 'You know what? I'm gonna switch to the UI thread even harder.'\" src=\"data:image\/jpg;base64,\n\/9j\/4AAQSkZJRgABAQAAAQABAAD\/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk\nJyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX\/2wBDAQwNDREPESESEiFFLicuRUVFRUVF\nRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX\/wAARCAGpAYADASIA\nAhEBAxEB\/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL\/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6\/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL\/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6\/9oADAMBAAIRAxEAPwDs\/Fmr\nX+nXVullcGJXQlgEVsnPuDWJH4l1lkBN6T\/2yT\/4mtDxv\/x+2n\/XNv51zsIOykaRRrjxDq\/\/AD+H\n\/v2n+FSjxBquObs\/9+0\/wrLC+lPpFpI1Br+pkn\/Sz\/37T\/Cj+39T\/wCfs\/8AftP8KzR0pR1oHZGl\n\/b2p\/wDP2f8Av2n+FKNd1L\/n6P8A3wn+FZtOHSpbCy7GiNd1L\/n6P\/fCf4U7+3NR\/wCfo\/8AfCf4\nVmjrThU3YJLsaK65qJfBuT\/3wv8AhV9dUuzGD5xz\/ur\/AIVgCtFSfKFRNtdS4xT6Es2tXqA7bgj\/\nAIAv+FY194n1eIHyrsg\/9c0\/+JqS8fapB6msOU792e1ZqUu43FdiX\/hMNe\/6CJ\/78x\/\/ABNEPjHX\nnukRtRJUnkeTH\/8AE1jjnIPY0luAL1Tnoavmdtxxgn0Oxk8Ratxtvsf9s0\/+JqvH4g15ZN0molk\/\nu+TGP\/ZaprGXmBLHp0ollWJSxyQPSuRVJ7Jm\/JHsjTk8S6qzYS8K\/wDbNP8A4mmr4h1kOxa\/JX08\nqP8A+JrAs7hpZH3RnLc81eUll2Gm5zWlxckexo\/8JXqPmBBe5J7eWn+FRXXijWYnwL0qP+uUf\/xN\nVEs4YsOMbqzrpmluNgPvxVwlJvRsapw7G2PFerkA\/bCffy0\/+JrMu\/GuvR3GxNRYD08mP\/4motpw\nPWsbUE23IPY120G3KzOPERSjdG6njbXiADqDZ\/64x\/8AxNOPjLX9wH9on\/vzH\/8AE1zyjOMVLjGP\navU5I9jyHOXc6KPxhrhk2tqBORx+6j\/+Jos\/FuvSXhWTUSyenkxj\/wBlrAVmEoHqMVPacagq+tcN\nVWlod9J3jqdkPEmoMhH20hh\/0zT\/AAqH\/hLb0DH275h\/sJ\/hXNXmY7gnceR61Q2qjs5UnNcTUr7s\n6U\/JHVv42v1JAvMkekaf4VAvjnUjMAbs7f8Armn+Fc3tRhu2jPvQTHjnGaabT3HKPkjqpvGmoPGf\nIvSGA6+Wh\/pW94Q1S\/1q1uJLq+ZijlRiNBj9K4GyiXYc+lSaHr9zol7cx2pUpI2SrDj2rVSstSFF\nvoentZ6tkbNUP\/fpP8K53XtU1zSWGNROCO0Sf\/E1raV4ssryNUuGEM2OQeQTXNeKrpdSv8rKDEvA\nFNu6CC1s0R2ni7VmlHn35KnoPKQf+y1FdeLtaWVvK1AhO37qP\/4msp4olIxyRUEjb36cCsXJp2ub\nqMexYm8beJUJxqjf9+Iv\/ial0vxp4iuJys2pswx08iIfyWuavphv2qKs6Fzdk+orqXwHLK3Oa2p+\nN\/EkF9HFDqjKpbBHkRH+a10Fr4h1qWBXbUnJI\/54x\/8AxNcJrAxqUP8AvCuqsh\/oyfQVmnoWkr7F\n1vEethiP7Sf\/AL8x\/wDxNNPiTXScLqjD\/tjH\/wDE1VeEFsimCHacii47eRLc+JPEkf3NVf8AGCL\/\nAOJqu3inxPjjVz\/34i\/+Ips4yfaq8iZFCYrIG8X+Kw5A1dv\/AAHh\/wDiK9F8E399qXh9Z9SuDPcG\nV1LlFXgHjhQBXlzp85zXpngH\/kWU\/wCur\/zqkZyWhT8aDN7a8f8ALM\/zrnYh8tdJ4z\/4\/bX\/AK5t\n\/OueiHy0PQcdiVRjNLQKKRqhw6UvekHSl70ALSg0qgHrSHg1ADhxSg5ptLnFADs1fVs245rPFW0\/\n1IxWdTYuG5SvDkH\/ABrEkz5rD1FbV0eDWO5Hn4rJDZmkne4xzmpLa3aVS6jJWklH79sd61dEjBkZ\nSMgjpV9BxdiWwIliyfvDinTxhomB71Gg+w3Msbj5Scg1FdX8an5WB7fSuaUWpaHQrvYlSPaFAXFM\nnljt1y5wewrOl1KRvugD3qk7s5JYsTVKl3LUO5euNTZ12x8D1o0+Ql2cnJ+lZyoW4GatQBkI25ro\nilHYznorG0I4yOax9VhTzlKnI+tTSTMByPxz\/n0NZ92x+Uk85rajK80cleDVNtkqqFjAI5po6+9W\nLaIPCGc0y5mhhG1CAfX0rvlWjDRnmKhKdmMkxGVY\/wAJqP7bsuFlijY44yRVZrmAnLSZNJ56kgq3\nPauGc3J3PQhTUFYmnvpLg5cr+AqMNKcjzSfahF3ZJ5GKd56wjG3P0qDTYYiTs4Bc+lTpby7\/AJs4\nNQNcSzEeWuMdCaRpLjgu464osO5fgnWJuMkdKqvEftDP0yeKrxoygkkpk8nNTbpEwD8ydiKHsJPU\nuDIQYOWq9p9nJdKzMTx61lRXK+Z2yOxNdTpssU1tiJ8OOoqNUax5b3Zj3cXkbgDVKLIWRic1oX9t\nO052oW57Uw2EywEBD+FK9nqOSTWhysrtJO\/B61saCpW65HGKY9tLnAgJIrS0u3lEwJiZeK67rlOK\nz5jM1xcanB\/vV1FiM2y\/7orn9btJpNQhZY2Kg9a6SxjYW6jBBAGc1lsi1uKV5601hxU7REds0wxN\nj7tF0OxQl5NDxnaKleM7\/utU\/kOyjCGhCsYssZ8w16P4FGPDiD\/pq\/8AOuIksZy5IHA4Nd74NiaH\nQVRhg+Y\/86tEzVkZ\/jH\/AI\/Lb\/rmf51zsXeuj8YDN7bf9cz\/ADrnY+M0McdiSlpKcKRYDpS96KKA\nFoooqAFHWlpoOKcDmgAq2v8AqR7VUqaKYBdp5qJq6KjuV7sjBrCum2ybh1FdHIqv1GKqvaQseRWc\nUxtnPYLtuINaelyCCfPP5VeW2hXoop\/lxqeFGavlYXQ288q4XITJFZr2jzHCjH1rV49KcGx0AqfZ\nt6mqq2MI6M574+gpRoRx97j0xW5vPf8ASjJNVyMbrsyY9J2dAPxqddNPqBV\/n3\/Ojn1o5NNTN1Wz\nNOkbmyzY96iudGjaPcXP51rEkHrWRrl+LW14PzHgU4pQaaJlNyVmYuo3cdkBBG+5l7isr5pc7+TU\ncHm392fLBZvpXQ2egTv97j61bl3JjDsYPkHGQM0r2s4Pyr8pH5V21tocUcfCAt3p82mYT7g\/Cp50\naeyZxkKThsc5Par628KRr5nJ6gVentjE2QozWbK20ksep5zTTuS01uDvtP7vAFR4IPzfnTDKAegI\nqSOZZPlyM+lFwJVQMM557+9J9zgDKenpQoKgEHK9+OlWY4g6E5BHfFTcdimyI3JHzdjVmzmkt2X5\n8EdHH9aSW3aFsmkiI256+q0dLie9jfiuxKucjceuak8\/JxxmsaOT7OVYEGI9z\/DU7MUlyPukcGqj\nqRNtF8NnooprXHkjcFqqtxtGc09n82LJ6VbViFK4\/wC2I55FSR35+6uKoNGqquF6+9SooVlIApWK\nvqaH2pxS\/aXPaoMZ70opEkpnY1It2QOlVwM07YQM0hkpu2z90fWu18KSGTRVY\/8APRv51weK7nwg\nf+JGvtI\/86uO5Etih4u\/4\/bb\/rmf51zqdTXR+Lv+Pu2\/3D\/OucX75qmVHYkHWlxSDrTqRYUtJS1L\nAKKKXBpAJSikpRQAtMPWnEHNNJwealgOycCko7CkqUMKBQOtLVIAoooPAyelMBRS01GDDg5p1Ago\noo6UAMkOB74ri9feS\/1JLODJcnaMdveuyuOIy\/8AdFc14ctxNqlxeSgkJ8qH3z1\/pSbsVFczsbWj\n6HDp0KKBucDk1vRqg6CqgfHANSiXjqaxbudsUkrFoKMYGBR5YYdjUAlHcn8aT7QT0IFIoju9PjlX\nO3DVymqae0WSBgZrrvNJGC36VnajEJY+varTsZTVzhWzkg4phiDrgHB9q07y2CucVQ+VGyRmtU30\nOaSH2F3ljbzffH3T0zWhGWtm3JyueV9Kxp40KiRCVcHI5rQiuwuyRslTgNUyQJs0JpAyEDnjKn\/G\nsp5\/JnHGAT1q\/OnlqpT\/AFbDIrPuY1eBw3VRkU4hJ9i7HKrqyN91x09as2MquDBJyydD6+lZdkS8\nJB4dTn6ikkuTDOkw42nDD2pCdmtTdkSMA1JGAbcAdqI41uoFcH5iOfer1vBHHGqkDHrVOasZqOup\nmO5IAA4FPRtzAYPFaEqR\/wACimokZPQVPtEXZJjB0paf+7LYJANNIwSKammRYjmbZExFVrOaaV8N\nyB6VcZdy47GnRW4RcCtEApHr1rtfB3\/ICH\/XV\/51xZBHBrtfCAxoY\/66v\/OiO5Etil4t\/wCPu2\/3\nD\/OucH+saui8W\/8AH3bf7h\/nXOr\/AKw1TLjsSAYNLRRSKFFFFFSwCnbsDFNopAFKDikooAd2qJz0\nqUdKhm7UmA\/PAopinilzzUIY4UtJ3pkkoB2jrVryAkLBR7VGPn5Y8VAxZ+M06G4GCuM4rTlsTcmU\nBX+XpU2D6VQN6BJ93OKeNTUnaqcipaC6LgBzQRVJtSwcbabPqhtojI8XHrSswuT37+XYzMeymqej\nWht7CFecsNzfU1UbXlvwLRV5mIXp61uoQiqF6BcVnM2o2buP8vkHNSBM\/wAXNVvP3ttzzT0l2Nz0\nrM6iwI8jnmmmLHQfpU8cySDKmpQAwOOaB6FLBUCql0cp9K0pFB71SlQEEGhCkcvdHLkEYwaw7pgr\ntz3rodUgaMMy8g1yt2xL+xreJyT0AyYGQeD1qzZlZEaLdlcZGeKzg52YHUVNp82Ltdwxk4BptGaZ\n0NjKZbSS3kILR859qrzqRLtP8Q2\/WiM+RfoSvysChHrU0wIUhuqng+1Qty2jLtJWjkKNklSRgdcV\nPfJ8pI6MKryDytQyWwHGAelaPl+emAOSDye1U97iWxNod6TbKhPPSt6MlgCDxXJWRML4IwQxFdNY\nS+ZBtH8LEVlNBui95YYZFVXRkPFWg+wcmmk+YaxWwXMyO1ma6D5baD0rQdcHFToVUAVHPgNkVtCV\n5CdrFSSQqy4q7G25VPtVNCm8h+KnFxGCAGrci5JIPmNdr4S\/5Ai\/9dG\/nXEs4Y8V23hMY0Rf+ujf\nzojuTPYoeLf+Pu2\/3D\/Oud\/5aCui8WjN3bf7h\/nXPdJBVMqOw+gUYpaLlBRRRUsAooopAFFKRiko\nFcKinOMZqbFQXPAFJgtQBBApQRTFORThUlDwcGmSKNwNPHWnYzVJ2ERNt27UHXrWHdakLSZoiM10\nSIAxIrk9TtZbjUnEa5PFac1zOemxMmuRqD+7696hi1xY5Hby1OarDSbrG549ijuad\/ZwKghuSO9K\n9mZ3kSTa8XkBVf0rQd7nUrHCgAH2rBurF7dlJ6H0rrdJz9gjz6U07lxu9zHs9Fltp1leUL1wcdKj\nlu7qByBcEoOldDeRNPbSpGSHK5FcK8BhmjNy8g3sQWAzg\/Sk4ps1T5Y6HYaZd\/aAmSd\/Xmi8udoY\nZIOah0nTtmpIsTF4wu8vtwD+FO1W1ZWJXqx4rFpJnTduJmfabgOfKnIHoc1qWNzOCGe5Kt6g5rAu\n43AAzg5x171XtXna6ECTIsgONrNgmrUbmTly7nfw6mo4mAPqwp7yRzAshGD0rjE1Ga3k8q5UqR3r\nQtb4gZUhg3vUOJqqlzQvIg6kHp7VyGoWJRyCoweldgk7TEBlAFV73TBcIdp60J2CUbo4NoWU8\/zq\nu6NG3mK3IOa2r+1ktJMFMisyXDg+W2xx1B4zWqZzSVjoJSJrKG4TqQCD9KtECWNT3xg1TtPn0PnA\n8uTbx9Kns5AVGf8AdPsaybRcWZ9\/CTAjKcGNh+VWYZCoRse\/4VJP8kjAkbSOaidPLg4IyOmKvcSu\nLqKqsu5ej4b6Gr+iXG6Uq3Rh09xWdf8A72yjdf4CDTdNn8uZSBypqJLQGdc33cmoi9Sk70z+NREZ\nHTFYLYRKrHihzTUz6UsjBV3HpVU\/iBorPHubOcGmpBh8k5NQzarGnPBqeyuVuo94wcd66SGiwfkG\nfWu68Itu0RT\/ANNG\/nXCTHnAruvCAI0Nc\/8APR\/51EG3UCa90p+LP+Pq3\/3D\/OudP+sFdH4r\/wCP\nq3\/3D\/Oudb74raQR2H0UAZ6Ud6goKKKUdaBXEopSc0lArhmiiigAqG66Cpu9QXf3R9aT2GhiE7ak\nXnrUCfdqZe1SMkHWnCmVJTQxydazIR\/xNJTjJFaSmsh9\/wDacnlHtxiriZyL94shiIIwv0qO1s7d\n4t+OnWmO07g+Zwvep7eaNIQu0nPWqDqc3roBudqN8o7Vs6Qf9AQelYuthFvFYA4Naekyg2e7sKlO\nxK3ZclusSBI+Sf0qtJp0byBnXdg5wRUlo6Szk7ePWtaCATSA7eBWUp9jrpRutSWwthb228DDN1qK\n4tfNOeCR7VfkIHyjgCmgov8AEMms7nTbSxzt3paMI2KnKE4OKz4tPtkvPOlRjJ9K7GSDzEOce2ao\nNAEfDqD74qlIhwTM5tPhuWB8rcB60JoKx5MeQDzj0raijVBwBTnlRBgdaXMylBGclt5QGeaRyBwK\nmmmU5ANUZGY8g0D2M\/Vo1mjIx8y1xV1bne2R0Ndte5ZM4rCuLYSP05961hKxzVI3Y7So2Gh3O7Jb\ndkZ+lRWk3zYI68n61oQxiLS3HqSfrxisa43QSqUOSACRS3M2rI07n97FnoRzmq8MhdCpHQU6OcMB\nxww4qtLmOYnGFIoXmNvqTQvvt2jbkFTVa2fbI3cdaInZJEUnjPHvRLE0EvH3GyVpsk7S0k8y2jP5\n1KR6VS0t82KH3q72rms+gIcikjOR+NQXw\/0V9rds1HcXTY2LyarefKRtkAwfWt4U7asnmdzmyGla\nQDJwT1rd8PEm02t2zU\/2SMKSqj5utSafD5O7jGfStNgbuWXPzj3rvfCZzoq\/9dG\/nXBSn5gTXeeE\njnQ1\/wCujfzrOm7VGhVPhIPE0Ye5gJYDCH+dc5NC6OpI49a2vF7Mt5a4JA2H+dZLS77cA9q1luEN\ngjCt14qTyFYHYQarHkGktmZJDycUihzAqxBGCKSnyvmTNMoJCiiigAooooAKgu\/uA1PUF1\/qx9aH\nsBDGcqKlU81DF9ypl61NiiTPNSVEOtS0DAdayGkaPV8KuQRWvWYw\/wCJvx1wKuJnMtzyyLCSIx+V\nUodWtwFVozuzg8VoOsuDubK9MVXQWsY+deRVMRh6+wkkjcDAPTip9NzHYgnkGoNcuYpZVERBxwR6\nVd02RG04Bveol5Erdj7BwLoA9GFax1FbQDNYEEircLIPuq20D1JrUlhFxEwPPGBWNkd1O6iWE8R2\n8ku1wF+tWTf2kyEK6nNcfLoxlnJdC59c1fsdAEbbsuB\/dyafKjRSl2OktrwMhUkHHQ0srDrVEW7Q\ngYHTtT3kO3BGKh6FbitcEcA1A1wT1qCSTBJquZjnrTSBuxYeXmkVs1WL7jUgcKlMVwlIcEHuKzZY\nh5gx3qzJLg1WL\/NnpjvTRnJiXTfuhGnQnFZmoIBdAD+GMbhWnGA772OFHIHpWWjfa764Y8jYQPpV\nRMpFBHeCTYThM5FXJf8ASIGI69KqrCZrVUwdyjKn1PpUdldFZNkgOc4ptdSPISOQhwrHkHj2rcjj\nS7tVUj5h0rnr2MrcMFbqNy471d0rUdspjYnGMim1pdCi7OzOs0lGS12ScMp6Yq5MwEdZcV0VG4HK\neoNTtdpKhyeKwcdSrdiUuiR7h96oInaaTkcetVJbnZx1FT2t3G67R8rGtrk2sXJWEUO6q9hdi4lO\n09Kmuhmzb121jaEGjvJMnjPFUQ7nSTL8vAzXceDznQl\/66N\/OuKPAIrtfB\/\/ACAl\/wCuj\/zqYq1S\n45P3Sh4v\/wCPm2\/3D\/Osb\/lhW14v\/wCPi3\/3D\/OsYc25q5bihsRo2RSR8TGiLvSoP31IoJuJeaXr\nSTcyE5pFPFAh1FAooAKKKKACoLr\/AFdT1DdD5KAK0X3RU69arw8gVYWpKHipajHSng5oGLWVdADV\nUwcZ6VrBeM1k3yj+0oixwDVIzmX3hYxE78gj1pkUEUifMwqSZ4zFtBIqvDaiVMox475q7CMPXLGG\n3dTARljz71WikMFvtzksMYq3qenmGYSM7EFsgHmqltC1w7zMfkXj6msZblQjrcsbhFErZ+5+laD6\n1b2MURmBYuoOKy7zI\/djoOtVru1ae0RsZK5Q49O1JLubxk72R0UHiKykkAETAHo1aguInTejDaeh\nzXmsuoz6ciRGGNgvds0\/T\/EssdzjZ5cTHGASeap09Loar2dmejiTd7jFVpGKms+11JZVDKRk1NJM\nXNRY25kJKxJqE9KN24ml+tBF7jOvSh2wKcTiq0re9FgvYhnkwetVWkDNt6DvikuJMkKOpOKqzSiN\nOvSnYhsbdal8xiifa6kMMDhjkfLVi1jCfbblsfvGYnHQZJ6VkWtr9pu12bt\/UHPStW\/dbW3jtYjy\n2Nx9atrojJPqxtvAGVU\/vRkfjWV\/rWw3FwnBPritq3cCKFl6AVl6zbmC\/kkTpkOMD1prsElpchu2\nE1sjMMOhII9agt9jbc\/K9Sl\/Mttx6jgissyEP1ximldGbZ0UF\/LbnDgkf3h8w\/GrS3cE33WKN6jp\nWBZ3jI2N52d1NaTRR3CGSNQHA5x3qXEpSLzM7AqZEb3p1oj78KwLDoc1zs8ro\/lqO\/Brf0nEdr5p\nGXDc0nGyKUrux0UbeZaDP0NQ20KxShlqGG9WS4CJjEgzx2NXI0w4H40k2EkXSQF6123g7nQV\/wCu\nj\/zrhnP7uu58Hf8AIBX\/AK6N\/OiH8Qzn8JX8VBDcQbzj5D\/OuakmABVelbvjGPfd23OMIf51zhBX\nGa0luEdixA6gbj+NOeePdlOtQgcUnlAHNIdxxOTmnL3puKcOtADqWmjnpS0ALRSHpRQAtQ3P+qNS\n5GKiuCPLPNAFWH7oqdarwH5RUxfb9KltJXY0TDpTlOKhWdfSnfaEHUVHtIvqVZk4Y1l35C38BYZ5\nrQWZWHFZmqsY7iEgZ5xzWkGnsyJp21NElHjI2EVHbxBUbEmOfWnmWQxZEY6VFaRb4yX4INWJbmNr\nLMbgxhtyqPXvUNgCluNw78VNeoPtMoJqBS3lhEOcdayu3oaWsMupVWRj1PHHpTtJlF2l1E56kFfa\nq12jLK4xncBVVGeyAkPG75do7juaLXNISs7s1G0ESS\/OiyKR0J\/WmW+jabpsjSyfO5GVVuQKW5vp\n7cE43BhwfaqUbS3Eu9jkDtQkzSThe6NhWR03RxhR6CnrMDwetV4oZAMrwKe1uwwTkmiyJu+pPvUH\nhqN9VtzL1OKYZ8dTQ0F0W2kwKozzYB9ainvcLgn8qzpZjM2O3rTSIlIe0u4hj2NQ3i4YkDKkZFPC\ndMVbigFxbfNw0TZ\/Ch6ErUrwuun2hZiPNk\/QVVvZGa6Q9lQH9Khv5TLPu+bAfGD2p0sguIElC\/MG\n2N+HSqWmpD7F+0BW1UH+EYp+oILm3R16rwR3NIjKQAvTFIzHy2Cn7rdfQVK3K6GO6kRkd88is+WP\naxI5z0ree0WYl4jxj7p7fSscRkDaxPXGK1RlIZCQG+ZQR61egnET4VsqaomFgTht30pQjRsOMg02\nriTsaEkRnkDIudvWr9vL9ngZMfePWsiK5eJyQSA3BxWnFOtxGd\/zBRnPQis5JmiaY6G68q7jkHIV\nuK3IdZSWT5oyua59Y0MynzMr3yK0UVQvyEADoaljtc31u45E2hifTivQfBh3aApH\/PR\/515DHK1v\nkiTOa9W+Hz7\/AAwjZz++f+dOC965NRWQzxb\/AMfdt\/uH+dc449q0vH981rfWaL\/FEx\/WuQbVJf8A\nJqpPUmOxvdFpSwGMkVyd1rVwmMN14ph1GeRQd1K47nWmVBnLiozdwj+MVyTXUrHBc0nmv3Y0uYLn\nVNqUKdGqM6tHngZrmwxJ6mpVPuaOYLm4dW5+UfpTP7TkY8cVlL061MvUU7jLv22UnGaDO7DBOarL\nViNC1ICxFwtSuPkzSRqMAU+RSUwtRNNxY47lOB\/Okf0WnMpBpttA0Jb1PWrBVj\/DXLJWehpfTULd\nTkZzTNT\/ANZAfepoiVbkdeKr6vDLLAjQfeXkGuign1M6mxfHmleD8uKZbRuHds5GelYP2jVVUAJ2\nqe1utQjX5omx7GugzUtSLXCYLjft4btUFlcqqtIQMYpdXee4gBmjKsM4rNsJfkdTyV7Vm9HobJ3R\nZZvNZpZSViTk89T6VmXk5mYkDoOnoO1WLtmeElDwD0qlGg2qrdXPNKI2+h09j5d5pUDtjcF2mp4r\nSNTycY9K5q0vmsS2TmMdRWgdUVkBjbjFPldylNG4HWMYHP4VWubtUTkisKbWCBnPaqcd99t37WO5\nf4TTUBOoaVxqC9B19qpPdFx96oCGz1pyRs\/UYFVoZ3Gks55Jp6KR2qVYcY9KkCY6CkUl3EQELzUt\nvc+TcBezjaR9ajYnFVcFpoyP7wpW0HtoW9Qt1ud6phblP4e0grKtSyOY2XIf76itW7j86ZZ1fa25\nlHvioJykZ3KoDsu4kUJ6Etak2zYQAePWklGxcdd4xVJLl442k7HgAmrpdZkQ5w3pSH0K0LmKQMMg\n+h71JJbKzbgowefpT40RTl8g+9Md\/KJKZZc9DVPyIXmR\/Z4gepH0FKLFH4SVSx6q3HPtSl0fo2Pa\nm8KfvU0wGNZmKTay4I6g0\/7OqQSgfKX+UfWpPOOBn5hS4LxcjBJo5gt1M4W9zHzuBUdxUzXMqBNg\nYqepq0WCjll+gNM649OtVa4it9sdhhgR9a9o+GDbvB0Z\/wCm8n868jCoVwVBr174aRrF4SRUGB58\nnf3pqNiZNtGN8Sv+QpYf9cW\/nXF12XxMONVsP+uLf+hVxe4VlLcqOxRvfvCpEPyCor7ORz3p8ZxG\nMmkxElOyKj3U6kBKrYPFToc1XWp4hQMnQZFTIlJGvHSrMa+1UMI05q2i4FRouKmXigCRRTqRelLR\ncB6jJpwUZxSJSmqtoFxC8YOCwz6UefGONwx7\/nShybQxtOFARsCNyG3bsgFMYP8AvcVBNqDpLb+Z\ndlWWz2LI7FlhnPdvw4z2zWXO10C5MZYz3H+eaSS4hgj3yOiJnG4nAzSxTboCGuHknECRmSCTBYiU\nsAGxzhcAnHNNSeb\/AISvSJolhM0lzI6wyOVRsxvxuwecE44649acW5MTdtTF1u9gkQLFNG\/8JCsD\ng+lc3Gwium2N8rIT+X\/169etf9D1XVp765eaC0tre\/XzkVZIV2zDa2Byw29TzggHOOaetSPZ63qN\ntDIymDQb25UqcFWklzke\/wAv6VqqdifaM8z3IAqswG7se5xmqzEM5YPuIJGF5wfSvTUvLy4vtOUT\nyyXL+F2mgG\/LNcHb8y5\/jIzz161uaTvGqXQvZY5bkaoAXtYyiF\/sg6gsx+779cUcnmP2jPCp3aQc\nA7SM9KaqvNexRKdiJgOx4C\/X0r2vTfINnpqXwPkS6b5TexaVFB9uSOe1SC2mu7bUobCaOLdeXQut\n0Pmq2VACsu4dVK4P045qkrEuVzxrULcJnZkheWIGelZtuzQ3CuFb5uRx1Fej6XcSWvw01Mfa5hF\/\nojMGkOIxJIvmD2DAkkd9x9a2\/iDPHbWQlvJ3g235a1dGw+0WuR5Z7DzQv44p7oV9TzbzVfllKsB3\nBpySLGCD0Xrx07816hFdzTeIhFdzzvAfDAldA2fmL\/MwB43EDr7CmeKhKdH8UCL7YP8AiYJuNq20\nbfskOfMP\/PPH3sVPKV7Q8285RntjrkUqzDcR3HUY5Fem2VyJPh8LgygobK4jMnmbgXMmAN3ck8ep\nqnazzJ8ab2OOZ1ilRVljVjtfbApBYe2ePqaXKP2jPO5JlwTjCgEn6DrUccnl5YjDsCEQ9fc4r0bS\n7h7v4Vme6lmmupNI1BjI7bt3zclieSen611GoMZNe0rGcR6k6HdzybOQ\/L6D29eafIHtGeHXMuy1\nRVOSpJZv7pOMZ9O1PnnUskU0fRAN44Y\/416JNp8rfD3WYLt7hZbqO6vNmoH\/AElhEUClh3wEHPbK\n1Z+JCudCuPtO7b\/akX2fd\/d8kZ2\/jv8A1pciFznlrwRy4MUq47Bhg0I3klY5Dhj0NJcIqEletUvP\ncSYIJFNx0Hzam2s0TLiWMtj+If1o2WzdHwO\/tWalyBKUlAYcAMO1WHAQ\/eXb61m42NE0PcWsZO35\nj7mqd3NwBCoB7mmzbgTjGPUCo4o955yR71UY63ZDlfYu6dE08+2R8oVzU9\/tkmRFyFUdPU1HbsIU\n2J9ajLCSUuT15ojvsD0W5KqBTwB0qQe9Qk7e+acGyP8A61aLQjQeeORXr3w2OfCaf9dpP5148SeR\nXsHw0OfCKf8AXeT+dMTMH4oMBqun5\/54t\/6EK4beW+6K7f4pIW1XT2zjELf+hCuNjYKOoNZSi2y0\n1YrSxvJ7U9LZ8dCfpT2vUS5SIjBar003lbQF7Z5rFtrQpKJSW1fA4P41ItsWHJxQ122doHWnozvA\nxzzS1DQcsCqOWp4VRyrVSZ5CmM9qs23+r59aqzW5Kdy9EM1bQYxVaEHAq4vA5qxoeozUgHGaavap\nF60DFXpTqSloAkTpTu9RggrSCUA4IrS+gmJdS+TC79Tj0rCtLp7+Zg\/JzW7LtlUqRwaq21jFbylk\nHWrTi4u5DTvoTRTeVtUAZJrnNeljvLwxSqHSMcc4wfWujeEeZuzwBmuLuWLXkpA6k0rK2g7sdHpt\nnKG2xn\/aO48\/Wq8lnbsr7Y+Rxksc\/T6VaSRosc8YyfpUUzbmPl4y1Yu99zVJWKf2SCIAyAkjp8xy\nPpTxpsEyBrdmHcruIOatLaJEBJM+9j0UVnXkjsx8ohFHcU02xOKQ1rAvIkCKwZzt5JwB\/h3redNA\ns9sXktczcAkMQGPqTmuetZnN1u3HBXAJ608oyHPcfzreK6mLOs1nRYZ7YSiIB0jVQBnAx2\/CuDuE\nMcu3nA6AnOBXpNpqceqaUSufORcSKevSuG1y2aK7VthAb2ptWAoW5DSYcscjH3j09K00tomz97J\/\n2jzWZAnzZPWteA7kwazkXFA1tbljvj5JyeTgn6U7yYvLCYOAdw+Y5z9akJ6Ckx+VTc0sivJaQiP5\nFPToGOPyqKxtPtUz79yxwjfI5Y8dh+J6VdJUjkj8avPZhrMWyPsU\/PJt\/jPv7VUfMzkMtNG068X9\n3cF2x9wuQeabcaMlncdGPdSWJxWXNbtA26Ns44JHUVoWmryGMW96fMU8KxHI\/GtLJmZFLbvnnpVK\nSLbOucgE+tdEYgwxxyOPesW\/jEU6KO\/NK2gzOugJGLDg56+tNiaVW+909alWPJI9Kl8kHApNXAaZ\n2GASM\/SmeezHBJ3elVpZjuIU\/WpbRV25PWlyofMy4hYKMnJNSoMVEo7twBUwIxwQfxpoPUd1\/CnD\nNR5PccUbueKBDySK9j+Gf\/Iop\/13k\/nXjBfqK9l+Fx3eDoz\/ANN5P50CZn\/EWKKTUbLzVViImxn6\n1yS2docfuY\/yrp\/iYcanYc4\/ct\/6FXGqx\/vGoe5S2NAadYmQSG1hLjoxHIq0ba3kK74kOPUVkqzn\njf8ArUqtJ2cfnSa1KWxpCytP+eEf5VILW1Ax5CY+lZYklH8X604TTZ6n86loZpCwsz\/y7R\/lSizt\nRwLZAPpWeJpvc0v2iYetDdwNMQW6jiJRTlSPsg\/AVnwzSyShWHFD3bxSkAYANO4Gnsj\/ALv6UuFr\nOTUOfm6VMLoOuVGMdc0XGWWxUUhwCQxFQG8T1AqGS5Bzg8UXQGbf391FcKsdzIozyAa6a2UNaRu\/\nzMRnJrirxi99x0yK7e0GLOMH+6KyqtpI2oxTvceYxjoPypuwZ6D8qkb7oplc\/M+5vyx7EUwHlNtw\nCATxXnl0JnvmSHcTu6LXc3N7DAjqzZZuNo7Vz6xhWlaI5H8RT\/GumjdbnPVUehnrbX8oIO5c\/wB9\nhxVywsmjuVe5KyxL1iPel3Pn5d5HpnNJjIIkVh9DitTOx19vceGJVHnaHGv+6A39a0rXSfCF+oEe\nnWef7rpg1wamNQCzFM9Cac160KnbLhuzKeDWdmM9J\/4Q7w7wV0ez46HZT\/8AhFNCPXSbUj\/cP+Nc\nXofjC4hdYp2D44ya7zS9Wh1OItH8rL1U9aG5ILJleDwvots7SQaXbRuRglVIzSXHhjRLpgbjS7aQ\nj1WtcHPQ8UEClzN9SlFGH\/wh\/h4dNHtR\/wAApR4S0IH5dJtR9E\/+vW1gUbcUrsdkYzeFtF4\/4lVt\n\/wB803\/hFtE\/6BVt\/wB81tkUYFK4zCPhbRVHGl2w\/wCAf\/XqQ+HtJb\/mHQen3a1ypxTSpxTuwsjE\nPhXQzndpdsc8n5Tz+tR\/8IloOf8AkEWv\/fNbnbFIRT5mHKjKHh\/SkUKthCAP9mo5fDWjS8vptsfq\nla560w9elHMwsjH\/AOEW0T\/oFWv\/AHwf8aQ+FtEOP+JXbDHolbJ5phFHMxcqMR\/CmgliTpVr\/wB8\nUi+FdDXkaVbD6LW0RTSpxRzMXKuxjN4Z0bGBptv\/AN8mmHwxoy9NMgH0WtvaRTCDmjmYWRht4d0o\ndNPt\/wDvmoX8P6WP+YfB\/wB81uupqJkzTuybIwZNB00Dixh\/I\/413Pg+2htNCWKCNY08xztXp1rn\nJErqvDQxpKj\/AG2\/nWkHqRNaHF\/E5QdTsP8Ari3\/AKFXEgDpXc\/EsIdTsN3\/ADxb+dcaEj\/vHmnI\nlLQjAwaeKkEaD+M07y0\/vmouWRqT\/exSgN2ZqeI0\/wCelSeWpH3x+VPcCIM6980vmP8A3ql8of31\nprQf7a0WAW3eRpFw1FzNIJ2GantIQrjcyj8abcwFp2K4x9aLAVfPcdalW6lCHaOPemtbvnt+dTwQ\nkW8oYc9qQFf7Q2eQM+1OMjEZ2imCB+DipBE+3GKAMeVi18MjuK760\/49Iv8AdrgZlK3+D6iu+teL\nWL\/dFZVtkdFDqPfpWNqeoPHMLW24kP3mIzj6Vb1vUV0zTnm4Ln5Y1Pdq5J7xgu928yRwCTu5WppQ\nvqyqk7aIllhjj8wySMG4OAc1AbuKJOHX6HOTVeWcHLNuIIxz1qjvkOdrEj0Jrq6HKy3Leq\/CnYO5\nxTFuir8OePfrVQO+MEKB9KljhLrgqCPSkCuy2b4zZDIKhOWJZCcH7ympYbJmIzmtW301WXPHTtSu\nUotlLSbUeepk5A6BhXTJqy2TAQSPFxwV4INYtxb+SBgnA9OMVl3N6WbZJ17HvS3C3LoereG\/E0eq\nyfZLhlF2q8c\/6wf410ZFeCWOoS2V3HcQPteJgyH09q9y029TUdOt7uPpMgY\/XvWclYcWWMe1Oop4\n4qRtjcfjQV9qeaQimK5FigrTyKaaRVyNlHWoJpggOTwO9JfXcdtFlmxXJahrxeRokfaMU0mM07vW\ngu5YnywrGbWbqSUL5hUE4696ordHyo3x87E5JFZs92yE5xt39KpRQPQ6UX9wrBZLkjPRgeKcNUuI\n2K\/aA5xxmuQluztOTkZyuDTI71sAA\/jmnyk3O\/h1vGPOAJ9q0Ib2G5X924J75NeYrqLup5+YdvWn\nx6u4Ay2GHcHpS5WO6PUKK4jTvF8ls4W5\/eRnv3rsLS8gvYhJA4YH07UrBcewz1qJ1A71YxUci5HS\nhaAypIoxmum8O\/8AIKH++38652QfIeK6Pw9xpY\/32rWG5lU2OM+Jf\/ITsP8Ari3864zBrt\/iO23U\nrHgH903X61yAdccoPypy3IjsQEYpjyBBk1ZMkQ\/5ZgVUlntGO1k5+tSO5Smu2LkJ0pBduvU81bS3\ns5ein8zTjZWef4h+JoKtcihvw5ANXtxZeKrpaWYOQWz9atQm3j43NQgsPt8vMBT58iZgDjFEEtus\noO40XEkBnYmTaT2qmShh3etPUOY2IY8CmB4D0lqeMxrEwD53Co3KK5Zux4pwZyOTTxGo6ScfSl2h\neQwNNAYk4xqJ5zyK761\/49Yv90VwUxB1Hj1Fd7bf8e8f+6Kyr62Oigcx41mXFtCT03OfauVEz3K+\nTEAqDGWXvW543jb+04WzlWj2genrUOk6cjSFs4BIq4aQIkr1LFe30qaQAbSwP8RrRi8NMwznBrft\n4xCgQDgVbEoA\/hqeZmypROdHh\/GNwyR7VYTSFQdB+Vbe\/PGajfkUrl8iRkizEfOKlh2oeRU8zfLg\nVWJxzSDYZdJkZFclqcZjcgdB0PpXXMwKmuf1WPcGIAORWkNzCr3Me3LEnbjIB717F8PLmSbw4InB\nxDIVRvUda8dtseZnZgj3r2P4esTos0XZJTj8QKqexjE3L+7ktyAgHNUBrDLKvnsdnfFTar\/rlHeu\nf1A7YsD1rJK7NHsar6u3mN5ch254yaBqsv8Az0NY6NlRmn7sCtHFE3NganKf+Wh\/Oo5NTlA5lIHt\nWWHwhJ6Cotsk5JPEYGcUnZLQqKbIL7UJbtmJchB0yayJk8y4U87SAK05I0dSq8Ddms+WUG5J\/hiX\n8zUrYtjr5\/KgUJwEGM1i3co2Kw781Zu5ibFAf4nNZ8\/NuM9jVRZDIzJ8nXtUYk\/eqBSA8fjTWDK6\nMB3pkDg\/lT59acx2SFv4WqOdclT3p4G9OaVxiSts+YZx6g1f0TWrjT7hSjYBOdpPBqm3zRc9qriP\n5ivSm7NC6nrml6vDqcIZSA4HzJ6VfbpXlek38llMsiFsqfmHqK9I03UYtQthIh5xlh6VBVyWTpiu\ni0IY00f77fzrAfGMDmug0P8A5Bw\/3jWlPczqbHHfEVC2pWOAT+6b+dcgY\/Y12\/j1it\/Z4Gf3Tfzr\nlDM+DwKctyY7GVMpweCaw5AyXPKkjPpXUNcuB90VUN4SxzCpp7D3ZDAFEecYpGkUtwQa0I7oPH\/q\nhnvTPNUnPkr19Kk1v5GW8wRsYFE0oVQQRn1q\/NcQI3zQL+VVZb+2JwYR+VUtzOTE08meUDNRapIF\nvJBnp0zV2yvYC\/7qEAj2pl7PZi4YTQgt9KGSrGL9ow2Qa0dPmJt5JG5CnpR5unf88F\/KrMEtkLSV\nI48J3FJjJYplk4U\/rU4Rjxg1SguLJJF2Ka10ljdMotIb12Oeb\/kJEd8ivQYP9Qn+6K4Bzu1jGMfM\nK9Ah\/wBSmPSsa\/Q6KBzXjO3LWsE4ONj1n6LLuQEdK3\/E8Ql0WXIHykNXL+G2M0zKBgKfz5p03eAS\nVqh2CqSBUiwAjOeak4SMDHaqzSYPJA9OaR0XQ5kGOM9cVGVBB4zzR9qTzEyR8p7VH9oVTKo67qAu\nMkQfQVWZR260+SXzD1FQCQDOWXIp2IckEqELWJqD4yCDx+tdBvEiYYj8KyNUtmkRmUcgdKqDszKe\nq0OfUCOYnsefzr2XwDGBoBcHJeQnJrxkksOM7idvIr2fwdeWtvpVtYCQfaNu4j1NOoYRTLmrH\/Se\nnQVz+on92v1rotVx5\/1Fc7qQ2oo75qYvU06DEGVFOzjtTY\/uCpUTcwrQlWbFjQOw3fdqO7nWG3k5\nxuHFSCTOQOi9azpyLu4VSfkJxWLerN0rIg3tDYNM3GTxWRM5jiC\/xN8zfjW7qe0IsYxsTrjpWEyG\naXj8fpQmTLQguf8AVRL1x1qlMf8AR2OOhq+43H8eKpXBxbkDu1XEhlOE7lGeuTUsgO3pUcC7eD65\nq3KmAo9hmmyUiFlzDk9QaIBnA9eKc5AiYehpsPBB96QEgTOVI696iZcYOOtWyDgH3qCclEPswoTA\ndnayMvfrWvoupmxnBH3G6isZWBXdU0IKg9TmkwPUYbhJ4VkQ5Vq6bRf+QeP9415z4av90Jt3JyDx\nmvRtE\/5B4\/3jV09yKmxy\/juMvfWhGOI26\/WuVMD4Ndh41Gb60\/65n+dc3j5TVN6iitDLFo7H7oIq\nC4sXV8pHk+1aKbvNwKh1F2iQkEijcd7alJLeVeDGRStDLtPyNUMV5N3elkvpgCA1K2pXNdXRRmgu\nWckRPj6VXFhcyOcxt+VSvq1wjdRWlYXMsoDMRg+1VexC94h06weKU5U1S1KCX7W2I2PHpXSxvIzj\nHSm3KtvPTNLmK5OiOQ8mX\/nm35VoWlux0u5ZlYHtxWhLJcJ93H5VGt9ci1kJUcU76EuNmYaq4OQC\nOfStTT7toyVcHFR\/2vIDgouaQ6rJz8goepKGo3maruHQsK9CiH7pB3xXndk5mvUcjksK9EjPyKfa\nuev0Ouh1KWrXMNvZOJ03pICuP61zvhq2WETv1AfOa6TUoBcWbKRkg5FZNjCYJrlApEbMAD\/Oppu0\nTWUbtMzNR1if7QygMwHRQOlZVxq11HgurjNdbPZxRK26P5T0YDpVCeKJ8hkLenArWMkZunLuZGna\ntJNPGkuSdwrUvnmj3uqlGPvVmw0qM3CyNGBjBAxVnVody+mTzUtq5ai1HU5H7TdSPsQnBPHagvew\nXAjdPcmtnyejBc4p3lhwC5JI9e1aXSMfZsp2zSCRT8ykevQ1qqBMORzTETJ+XpU6Lge\/eovdlpWR\ngQaeG1KRSAApyPY10OlRGHV7V4yQwlUfWoDbRlnYfK7ck+9aGgRmbWbIEZzICfwpSdy4xUYtna6p\n\/wAfGfauZ1P+D610uqkece3Fc1qXWP60LcwewqDgDvU8YC5Ynio06AU28kEcQC8A8n3qpvoKnuVb\ni48qHC9WHPtVS0kCygk89TSOTJJlhxVcSAGRx0FQbXH30+4sAevFQqoWNsdSMVTeXJ3HOQc1YL7I\nVBPLc1ViN3cgnABwOpFZ10u1Nv4VcZ92TnioHG9TnmmtyZFOJAXA71bmGZgKSCP5h\/OlfLSAj1xS\nYIrSA\/KCO+TTYx8x9KWdv3jEH2psTDOPSmSWuWUg+nFMmXfE3rxQWwRRIR5I568UdQI4TvUoeo6V\nbgxtGKoxtiZcdDxV9BhfTmkwiXdMuPs2oo3RSRmvYvD7b9KRh3Y14kTtkVhxzXsPgubz\/DkL\/wC0\nwq6e5FTYz\/GQBvbXJx+7P8657aMda6PxgM3lt\/1zP8658rhcngU5PUUdiBIQJM5qrqluJE++FPvR\nJfRW7\/MSSKxdS1U3DkRk4ppPoNvSxKlgR\/y2SnS6dlciVefWsYzsrZ3H860RIZbYlWOavlZCdkU5\ndFkkJKzx1oWVjJFGFaRSR0waw2klDEF261atbmUIRubilJMcXqdDbxMjgMy\/nSTq\/nN8wP41lWMk\n8sgye9PvJZDM6qSADjIqGmaqTJpUkLcFfzqVYCbCVcruNZ6of+ehqxHG5gkbecDijVEtszpdJmY7\nlKfnSf2XcgfdX\/vqrMrSY+VycCqL3kyE\/OapXZDViTTUaK+jVsZDCvQ1HyD6V55pTtLfRkknLCvR\nF+4K5sRudVDYawyMdjVC4gNsSpbcGJcD09jV\/NUbx53JZ41VR3B5NZwlpY3b0K4veNjAfjUyPCBl\n1XNZcqnduBoLt5ZrWwJmzp+bhml6R7toz3qLVtvGwZ5xVCC7urSxwMFM5A71Rl1V5\/m9Oin1p2Yu\nZWsx7O0RUkcE1LlSMqaoK08xJmcc9FHSrEZ2rj0oIi0SNIV7flUtvJnNViSeTUkDfNigJMmYjzwC\nhZfQd66jwlp+dQN0oxHGpAHYE+lM0zwmuoWsd3JdSx+d82xACMV19jZQ6fbLBbrhF9epNIzlNctk\nY+s8OT3ArndQ6xGui1jmRh3xXOah9+KmtyXsSpwR9Kp375m254Ucn0q9EBkE8ADNZF9MC4UD5mOT\nTkOGxHc3AitCx4ZuB9KzFYtaHnGT1qPUroykRr0BxmjzM2qBRx0pW0HfUZH+9cHGBmm3U+DgfePA\noDbEx+JqlPJukX2Oae7J2LTny7cZ70qAi3JNQSSFoVGKk3MIkXPyk1QkyVOFJ9qifMce4jr0qRGB\nwoFVdRnzIEHQUrXYX0K0hy5qMMEcP2NTOuF\/Cq7J+5PqBmqJZbJ6UXXEKAetRRybo1NSMdyJntmp\nGRRkAj1BzWqSCAR0NZUo2IpHUnmtFW3AfSh7AtGObmI+oPSvWfh22\/wrGf8Apq4\/WvJk6EV6v8OR\njwqg9JpP51VPcipsM8ZTpBcW7PwNh\/nXHzaraSggyY\/Gt34nM4W3CE52Hp9a8tCyHqrZ9xV8qbZn\nd2OklTT5jlpiT9ajNlpfeU\/nWAEcn7h\/Kn7COqmqsF2bn2LSj\/y1P51ZtrXT1GEkP51zRVsfcb64\nqe0JVtuDQM159N01nLNMQT15pI7DTVJCXLZ+tZt8mEBx19qoQRsZgVJx3pNDTdzrba1tIGyspNK1\npas7EynJOeao2C7mPsKbOWE7AdDWeppoXxZWef8AXH86kFvbJA0QmOD71lIUTqeakADW5fIJpjsT\nPY2xPNwRx2qjc6XZtn\/SWz9abJ7VSuIsIWLcmhbmbuSaZEsWoIFYsA3Br0EfdFee6Nzexg\/3q9C7\nVhiN0dVDYb3FV7xd1q5A7dKsUyRcx7ex61zJ6mxz6AscE1NHFu4xxUAOyZkY4K\/LUzSDaApwTXUR\nF6BPOuwrkLjjk1iNaATmZZV5PTNaMun21yCksrrL2yeKgXTfLwo2OF\/iqkKSYxGX+8PwNSqR+dV5\n7ILMG3bCD91aep2HFNiJyMikTKkY5zxTd\/SrelIs+r2cbDKtKoP50kJs9S0yLydNto\/7sa\/yq3ji\nkAx04FO7VPU5mYOqEGc5HbFc1qP+uiA7muj1P\/j5aud1AZuoh2zTjuaPYdnbGT6Cucv5\/wB47DoB\nit24lCW8hPpXKzyfvG9BRuyr2RSbLOCfXNW1\/wBUnoTxVUgyTBF\/iNX7mEwRIGqmJXKEr9QD7VSn\nJQZJzmrO08nvmq95GfKB98UR3JexZJzGmP7uaV3wijPSo1OLYZ7jFQyvyBTAsxyckk9KoOxd2Y9z\nTvMxF15JqM5DKPXrTQmzQdMov0qnckBcD1rSIH2dT3xWZKpaT6fzpIHsPi5hBA61Nj5RTbQYgx70\n8\/exQCIbg4QCrMD5dRntVW4IJwOg60W0g81cd6GC3NUfebFesfDv\/kVk\/wCu0n868mTnJ7dK9Z+H\nn\/IrJ\/12k\/nTp\/EKpsc78Ubpre\/sQOhhbj\/gQrz9dWB4EYruvivbTz6lp\/kxs4ELZx\/vV53\/AGZe\nhsiBx+FbNLcxVzQTU2I+4KkGpH+5VWLT7vGfIcVJ\/Z93\/wA8Goshk39p8\/cpyakGcDywKrHTbsn\/\nAFDU5dPuwwPktSsGpautSWPAaIHNQJq6Z4iFF3p91IBiFuKrLpl0o\/1LfpVJIV2a1pqO+QBEAzUk\n9ziZhsBIqhY2Vykqs8bAZ5NWZoJzeuVjJWs5LXQuI8XAx\/qwKct4BEQY1xTPIm5\/dH9KX7JMbQ\/u\nzkmpNPQYbyNj9xajlmR1OUX8qYLCctzGaZPZTLuyp496E9RNOwzSDnUY8D+PNd9kba4PRB\/xMEDD\nndXduwVfmwo9TXPXd3Y6KOkRe3NZWtaoun2hKnMxX5R6e9R6lr0NspS3IkmI69hXH3NzJdO7yvuY\n+tXRoXd2TVqpaI6u70trTTrO53M7MgMueuTzVKORi3Wu1MaT6ciYyhjXj14rjtQs5NPlLqC0Pr6V\n0VKfYzhU7la5Ly\/KoJPQHOKh+y3EfDyP+DVeiuo9uSQfpTXuUc8DP1FYeRv0KQV1b5sn3JzTjgjG\nakMimq7yDt1pkNjt+K09ATfqsLHgBs5\/rWOgZ2459q6fSbUW4UuPncgN9PSrjHUzcjrfDevfbJbn\nT7yUfbLaQqCT\/rF7H610fr6141r8ptfEryxMUZ0STK8FWxj+grsPD3jdJwltqjBXxgTY4P1onTtq\njJM1NTbE71zl8cXEdbmqSrK5eJ1ZSeGU5Fc9qOftMQz1rNbmzehX1Gb5CO2a5iWT5yDyM10Wpf6s\nEfSuaCmW5CIMux6U0N6rQ0NFszPNvI+VBk07VZA0rDPTIArYVUsdPKJ\/rAPm+tctqkjLIoGeOalX\nZXwojhO44z16U+e3aS03dlzTLL95MCvIzWlet5Fu6cYPTinsxLYy23LFHn0qnKuQWrTlKyWgK87R\nisvdiXB6VSIYhTMfPFNIy6+gq2Apz6Godm3AI4FMlo0Y28y1B7rWXO480Kp47n1NXYpMKUH8QxWa\n8ZS4EZzuHJoWwNl2I4hBqQHJJ7kVXU\/ugAehqZe1CKZDKeJD7VBavyv1qxNjZ06n86pxnbL0wKZJ\nu2zB0IPY1638PP8AkVk\/67Sfzrx2zfIbmvYvh2c+Fk\/67SfzpQ+IVT4Tm\/inqEtlqVgI\/wCKFief\n9qvPj4hugei\/nXoPxSsTd6lYESqmIWHP+9XAf2CSf+PpPyrZ2M1exNFrdzKucgU\/+17n1H50kOjF\nR\/x8IfwqX+yD\/wA90paDsyE6vc56inDV7knlhUn9jd\/tCUx9IOeLhBTSQnca+sTYzvHvUf8AbE7d\nHFObR2bj7Sv4Cmx6GVB\/0pefan7qFqSwajO5BLjGammv5UuWVWBHFEGlBAFNwp59KsXGmobzImAG\nBxio9247Mri8l4O\/H41YW4n8gMX4z60p00Z4nGPpSzJBDabHmDODnAFJrsUmMF3Jj7361WubqRwV\nByajeQE5UGoGk5b6VShqDlcWykezmE24F+3tU13qk90xMshPtniqDO2d2KaW3darkjuLmZKTkGq7\nDIYdzxUgPFRsuA2aslnqWhXS3eiWcnGTGAQPUcU+8tllBUqCDwR61z3ge9Emny2xPzQtkfQ11JAI\n61otRo4XVdIe3LS2uWXnK\/3axTO6DHNely2qyj5u9YGo+GICHnRygXLMe1Yyp9UWpM5FZXcnLHnt\nUsO6VwifMxOPpSOttErbrgAA\/wAPJrY0A2c9uXtcbgcNnqDWai+o+YuaZpwtxvkAMh\/StePAwR25\nqNE2ihi3YVrypEXucr4lm368+DwsaD9DVZJOKh1iVjrNwxOcHFMjfKAiiwrmlbancWTh45GCd1zx\nWp\/baXzxs4CMvU9q51X7HvQilJfvZHX6VDimx3Z1dz+9tyVII6g1m6dEFvdxAyM4qPT5zu2joeMe\nlXBAEk3E4zycVzyVmbxd0TOxdJFPJJrJvYBJ15bGMVYGooZipXocVuWemQhRdTkZIyqHt71F+U0S\nTOf0nTfskZlmBweQDVHVbszSgDGAeMVsa3qAAZIeAOOa5SdyHLnvVR97VkSslZGjZOJbZkyM1QuI\niHyOgpLG48qZ1PcdKtuNxIblT3q9mRuitC2flIwf51ZZQVwRUCwGNlA6k8fSrEq7cYPak9BpECgi\nU56Y6+lFwg81Gz8x4NNU5J9BRK\/zRH1polkdspZXHfOatbSB9Kq2b4lkAq+AH5B60noylqivMudo\n9OlU5xsIbGR0rQkXbwDUEib4yCfcU0xMWyfAbHHFe0fDc58Jp\/12k\/nXhtnL+8YHqa9w+GZ3eEUI\n\/wCe8n86qK94iXwnL\/F2R49T07Y5X9w3T\/eFeavdT9pmH416z8TLa0n1KwN05VhCwHPbNcMdM0jJ\nLSH860uZpGPaXUr5zKx+pq15kh\/5aH9a04LDR0+65\/OpzbaSnVj+dK4zCeZxxvP51Ulmm38SN+Zr\npWg0cnqfzqKSPQ1PIH50+YVjCjmkHV2pxuHHBkYfVq2M6IvREP1qG6NhhPssSjPVqL3CxWgMhXdv\nPXPNWpJN8gfJBAxVTdt5H3acXqrICwZmJ5PNRu5PU1F5g79ajMlMCQuQOtRM\/NIDuJphYA4oGOz1\n5pN1ReaqNhiQT04p4I69qBEmeKj6nNBO76UUAbXhC4MGuhM8SrtI7GvRNhxXlelTC21e1lY4UuAT\n6f54r1aN98QOeR8p+taRegIj7Vy\/i7V1gSPT1PzT8vz\/AA+ldLNKsMLyOQFQZJPavN9ZV79Hv2\/1\nhk3+4U9BRLYdzLaNWlJYYGPulRT7S6k06dLiAYYHLKBw49KkcgY3ADJwPXFVZFeZvLXcWLbVz0H0\nrBFNWPR7W6jvLWK4hYGORdy47etSkDb71z3hp3si+nzEsoG+Nv5ity4fy4nPfFaknA6g\/majcsT1\neo4ZMNgnA7UupL5epXC9w39KSFAcNKcIPQcmpbEX4IDL93g9cmrBiRYxGhZs8kgdTVa2cO\/lhjg8\n59BWtbxRwx75Of7ueAazbLSuLpdn8\/mEZFTardLDGY04LcfSpJLwRw4HHFYE8sl1KWBOKw3ZuvdR\nZsyJLgMv8Na91qDpHt37nb3rFhYQIcdT3pol3HcxyaTWoRdiC7lZ3YvwByRWVPIGfg8Vfuj5zbF\/\nGq62gEo3kc9qtaES1BAPMRhxkVY8\/Ix+FVpyDcoidB6U1yVnwRnJoaFfsbdtFttmmcDpxmqsx3jO\nOT0qdmzbpHngCqk0u35R1PAqC2RKOMA\/U1BK2652g4CLUzERgCqqxl5GPrVogi3mMq449RWnbTq+\nCrdaoXEeF5HJqvBI0D8fdFVa6EnY6HCynIHNVZAVbkcU2C5yAQalncMu4Vnsy+hmshhusjo3Ir3D\n4Xf8idH\/ANd5P514u6CaLGfnHSvZvhWGHgyMP18+T+dax1ZlPY5b4wnGsaZzj\/R3\/wDQhXmz9Tmv\nVvipc20Gq6cJ4wxMLYyM\/wAQrhDqVgD\/AKhP++au5CMSGTYwq68y7eavx6nYs+Ft0z\/uVOdStFGP\nJX8FouDMMSqTgCmuQx5HFbn9p2w+7AP++aadXh\/54D\/vmncDERAx4H6VbDYGBV2XUkmiaJYgNw64\nrOI2nnNCYE27KEd6aHJH04pgbBzmmKSCwJ71QE244PFIWJ7UwE0bs+2TQApYgVC0h3t6YpZHwOvU\n1EDkfU0APx5ucjtSxxSIxy2V\/u4p4wi\/KOvU1asbI310bVnMU5Q+WjqfnfGVX23YwD649aTdgK3J\nJzxin4xjPGelakmjRWomkvdSEMVvIsLvHAZT5xUsyABsEKByal\/4RmaLULKymuY1lubqW33KuQuw\nA7voQwqedDsYchKlWHUHI+tep6ZcieGFh8yzxB\/x7159pOhT65bTPbOB5UiLJuXIRCGJcn0G3oOp\nIrrvD26XQbJ4p98JmdEkKEEKvRiOwP8AUU1Vit2CTLWv73t1tIzkv94e3pWDqFj9m0y5SQDcqfNj\n1roo2fDzTOrzPCLjyihwE27sBvXHOPes\/VtPuLm5ceeixvdtG\/yZIRVYh\/8AdJRhTdaHcOW55\/d3\nRjOxgc46etWvD0Kz3MjMxYovyg9vpVyy0A+I5Y7hLiK3ieSSNyy8RbVDKT7NuAFWtK8P3tpHDPFm\naVRF5sCR8qshfBz7BM\/8CFZqcUxu7NHySvlTICJFwDWhK3mwpt53mntaELepvVmgdkRSOZSpywA9\nQOcVGLeKJYJBeM0cqeapNuV2qCw7Hk5Xgd6v2sRWZwupkvqVyexkPP41HGSWHIPYYNad1o7t4gms\nmnAcxtPuK4I\/dmTay9m4wfQ1as\/DXnwW9zbahFLHJdCEkRnCKF3GT6DpUSnFAkQ2yx2NsJHGWB5J\n7n0FEEktxN5soPqARwPYVZudLZbu9jnnEVrYbjLOULbvm2ghfUkinLpa20lw8908VvB5YLtbOHd3\n5C7DjGADkjI471m5Lc0TsyvdSOzbADuY4xio5gsCiJfv\/wAR\/pW2NAn83esyORcpBlVJ+RwpEoH9\n351z6ZqmdBmFtBd+erRSQyzsQvzKU3fKf94KcH2NZqSL5rlRIswlj1bpVVWxuGOlbc1q1tZWs7Oj\nC4+VkHWE43Kp9yvNY06YkO3v1pp3KRTRh5rsTyKa0v7xmPpTpcIScdarSNluO9XuQxu7bIG96tyx\nlnEyrmqcgwBxWnbODAFyNp7U2xJE0bosbu55xwKowyAztI+PUe1PnyF46d8VLaW8T7W3Db3HrU6b\nl+RFKFmbcQAv86ZHH8xJ6CpL+ULIETjPTFRqd1vk+tD2Je5VvpgRsTgnrVJyWjUn+E4NPuCfNOOn\nqaRRuXnofWtVojJ6sngfag9KuCTfHxyfSqUaFEwRn0qaHIbk8elQy1sLHJsc+te3fDA58Hof+m8n\n868PmXLB16ivbPhSc+C4\/wDrvJ\/OqiTN6HL\/ABhhkk1vSyiMwED5wP8AaFeetZXLElYH\/wC+a9l+\nIGwT25ONwibGfrXlU2tSxSMoUcH1q7kFG20+6MmWgk\/KrbWNyT\/qHp8GtTNyFAqU61cA8Y\/Oi7DQ\nqjTbwn\/UPT\/7Mu\/+eB\/A1L\/bVwT1X86P7ZuO+KNQ0IJLSe1UNLGVBOKglOQKs3F9LdIBIflU5quf\nm4P51S2Ahzt5pm79+voetPZSDkVXlbAz3BpgXVVpJESJS7uQqKOrEnAA\/E1uXPgjW7UsHt4m2QS3\nBMcwbiMgOvH8QLDiucSVcI7GQKpDExHDgA5yvv6e9enN428LLr9hd\/2gZmaCa3u7w2rK7RkLtDgK\nNzZA6DHXpSYjkZvAWuJdLA0duHNyLUfvuDIY\/M9Om2myeBtYis4px9klEswgjSK4VmaQnbsA9Qc5\nHYKSeldnd\/EXQLu70ab7Xs8u\/e4uT5MnyKI3RT93nIK9M1lL4z0SGy0oC7aR7bXJbuRFifIhZpcN\nyMHh1OOvPSi4XMaXwXrdtJIjxQkRQSXIkSYEFYyA4B\/vKSOOOtSw6Hrlz4uks2uIZNYsXikxc3IJ\nfADrtzy2ABnHTFdB\/wAJp4btL68a2v5J99ndYeZJnieSSQMqCNshRgc4AByPwgXxloC\/EM6r5pFo\nZWc3nlPypt0QLt27vvK3b+dSwuZUGk61FpV\/f\/ZNNvtPaSS6eNpFkR\/LJDyR4YHC5I9x68VZsbfx\nDLaJqAfTJpJLwrHJPIvmw3EhClQAcBvu\/KRkYzTtL8YaNbeBfsctzINQisry0W38lj5hlcFWDdAM\nDnJz1\/GtpniTSLPQNPs5LgxTQaxa3UkflNxGiRh2yBjqrcdT6UuVXHdi2XhfxHYotvaGCHMr3AkM\n+3abdijZPplv\/wBVaHhSTUbyW+8mC3ZLWd4j9mYCNvOf+HJ5UkAgjjGK1v8AhP8Aw5LeRO2oRIqx\nXqH\/AESQr+8lUoSoXnKjJ\/HPJrG8I+L9G0241CC\/ulhjkeJo5orZ\/Ll8uV2O1FXKgqVwMcYx2ocU\n+grs1GulsraKO+jWFZhLaLPIyA7Y3ETBmLYAyeD6VU1PTvEEmo6jHbm2VzbwWTp5qkxJI5VM4PDH\nJ59D3qhq2uWWvaUiWDO0sS6hPLE8TAosk4dc8YJ288E8itaPx3oEXiXW70XqtBdvY+Uz20hDCNj5\nhxt4Kg5Ge+MUuSN9h8zMJPDviCx0TUxEsK2zlnnRJlMv7hyGKDjgHH6e1Wr3Q\/Eeo63dafO9g9\/d\nFLyRI5hmMRYVcjPyg+YMevPpWnceOtAk0bUbMajkXMd\/hRBICzSSZj528ZBPfHrU8\/jbwv8A8JHN\nqn9rRsjRxRoILORJeJEZi7lPmHy9PTIHWnyoOZkWkT6vdaO2pPANiyXDvFE6gSkO3mEqTz+fYU0L\nMLWOSOBpIYEISRV4IUljk555NS2Hjjw5a2F4F1DzJfOvZIoVtpf3gkcsg+7gdR1\/Ssp44o\/DlvbX\nBQSQ27qxa138sOobd8vT0qWuX4UNO5zFumqR6vdTW9nI12ryJJGIydjShl5Gc5IJx16VfsP7Z0jT\npLV7R4ohDJv3x8qjlcnOeBlBg+59amt\/Elqs+kzuk4mWRJtQfaD5rImxMcjPBJPuxp9nqtrYSXRt\nVilM0CRNGtn5CSASAuGG45ymeazk3a1ikPWa6N\/eNcRxO9yGea2dMhkbD8jsOjCpYrye7lWMWyXK\nXMUflWrQlkKJu2svOcjD855qpJqNtH4kuL2FJDAbd4YhKu458nYNw7jI5q7Bq0EEUd0YSLuO1S3R\nYMQoh8xnYqRnHG0dO7VFtCr6k32rVvtMd\/YQSXDxTPLmKEsCSqqykAj5QqqMdqzLCfVktmnlgkXT\n5rU2xfySI2jLMc5zxyzYPHWteLUbNZlaC33Qi6knV2Qb7fcow0fPJVweD1AHrVUPbxwRssk0lyun\nmxKGIKpJY5YknpznFTfSw7O47Uk1qUPBNbzyJcuoWEpyjLyNg7YUY78VjXVrPaMDdW7wuw3YcYJH\nrXRT6haf2ut8mCrO7FPsQRuYyPmbd82TweOhNZV3c21zaQRYMHlQBBBHF8ivnkqewP3uehyKItlK\n\/QxUSObdzyD0qq9u3UDIzVw2oibc5xnoBVKaVmuyiZwPStV5CfmMaPzQV6EVb08K8eGXDJ2qkJdl\nzgirIlKSLKgxg\/MKbBbks6gMSOh7VWOYFJxwatSkSLuAwKg++NpzQBTS4JfDjPNXOGh2LxznFVnR\nI5BvyB7U9AS7EMGHbHamySpOmQAOCO1MiG5gp65q1KBvIPGRVe3\/AHdx79qroTszQEasMAdKqzny\nuMdasox21SuJ90zdwO9TFXKeiHRy8kZr3D4VjHgyPnP7+T+deDpICygHn0Ar3j4V\/wDImR\/9d5P5\n1a3Ik7ozfiUkz39iIcf6ps84715pLoN3JIzZQc9zXoXxTMw1TT\/KJA8ls4\/3q84ub65gYKXOaqxJ\nYg0G6ReWj5\/2qm\/sG4brLGPo1Z0ep3J53mnG\/uT\/AMtGFGoGgvh6XJJnQfjS\/wDCPvj\/AI+F\/Ks0\n3tyf+WzU17y4PPnN+dLUehNfWhsmEe8PkbsgVU88I2GOKeZGlX52LHGATVZwGBV+varQiYyq3Q1V\nlwQeagZXiPHSkMhPWi4E9vJyVPapZCOeOtVI2xMD2Jqy55FADcZ7deKdu4pueR9aVece5pgPPHQd\nTT1IZM9OelRqcgH3pwABz2oAdx2FGRnpQRgkUgNAEgx1xU2nSeTqlu5xgPiq4JxTGcoyuDyrZoA9\nTRgkCyKoyFdDx7HFefF1DEybSAckAV29jMJ9KkbPJjLD\/vmvPLhWQnawCYz9aJlJkkuwsdmFXdkA\n+lVR\/rH4XHb0pQPOUbWXHTB60oi3AAjisxmroUyW+sWzsVyW2kDoc11GuSCPTrhR9BnrXAxSNBdR\nOCBhwQB7Gux8TT4gYZ+\/g1pHYl7nJyMFJJ6+lWbC4Bf95gnOAaz5XDMM8+tSW20SjbuJ96mQJ2Z0\nIhB+bb07VNbQG5fDphFptkJyvzthKlICOT5jH27VzpN6G7aWpc8iKPGGBA+6o6CopJ0U425OetU5\nrsDgCq32ksckkAdqtU0tyXO+xcln3A4OfaqklwpGcYNMaYtngKPY1TucseGzzQ49gUmh8jNKDk89\nqUQLFBuP+sIpbeMtg9xRMDvOcn2rPyK3M9YWacHBJqzLb4tXzw3Wrdpb7mVzwMVTvZSzsM9eOKd7\nsTVitb3qeX5cvyleAamSUbvb1rKfDNhhg+tODPDyPmX1rRxTIUma8sazREdR6+lUVzGcjjHBFSQX\nQflD9VpZipYsOA3WoWmhW+pFKwk5HaoMkkMPvCpmTDqF6MahIySF6g1aJZYWX5eTURhBPDdTzmmy\nBoWT37VKkqOQGABpbagENoVm3Agjtivcvheu3wdGP+m8n868ZhRVBK85r2j4Y\/8AIoR\/9d5P504u\n7JkrIf4v8LXuv3ltNaSwIsUZVhKzAnJzxgGuTu\/hRqV0wJurQHv87f8AxNesUVoRc8jT4Q6gowbq\n0P8A20f\/AOJp4+Ed9\/FdWv4SN\/8AE16zRQI8pHwlux1ntj\/20f8A+JpW+E93tO2W03Y4zI+P\/Qa9\nVopWA8aPwk18uW+1ab0x\/rZP\/iKST4R6+5OLnTOn\/PWT\/wCIr2aiquO54r\/wp7xARg3Wmf8Af6T\/\nAOIqJvgz4gJ4utLH\/bWT\/wCIr2+ikI8PHwZ8RZz9s0v\/AL+yf\/EVOPhB4gxzdaZ\/39k\/+Ir2migd\nzxT\/AIU94h\/5+tM\/7\/Sf\/G6B8HvEP\/P1pn\/f6T\/4iva6KdwueLL8IPEA63Wmf9\/pP\/iKcfhFr5HF\n1pn\/AH9k\/wDiK9noouFzxk\/CPXzj\/StN\/wC\/sn\/xFN\/4VD4g3Z+1aZ\/39k\/+Ir2iilcLnjH\/AAqL\nxB\/z9ab\/AN\/ZP\/iKa\/wg8QMOLrTPxlk\/+Ir2mincLnnel+BNZsrAQSz2RbyynyyORyP9ysGT4T68\n5\/1+mfdxnzpP\/iK9iopN3BOx4xH8IdeUKGudNIB7TSf\/ABFOT4S+IBgG50zaDniaTP8A6BXstFKw\n+Zni7\/CDXyylbnTePWaT1\/3K2NZ+HGtagsSw3FgAqgNvkccj6JXqFFNOwrnip+D\/AIgLE\/atM\/7\/\nAEn\/AMbq3Y\/CTVoH8yefT3cdllfH\/oFev0UBc8x\/4V3rfT7RYAe0j\/8AxFRy\/DjXn+7c6eB\/10f\/\nAOIr1KiklYG2zyV\/hfrznJudP\/7+yf8AxFJ\/wq3XM\/8AHzp3\/f1\/\/iK9bophc8lb4W64Txc6f\/39\nf\/4imD4Va4Af9J07kf8APV\/\/AIivXaKVh8zPKIfhjrcagG40\/PtK\/wD8RSSfDDW2Jxcafz\/01f8A\n+Ir1iip5EPnZ5cvw21pBgT2GAMD94\/8A8RWdP8J9elbK3Omjn\/nrJ\/8AEV7FRQoJA6jZ4m\/wc8Qu\n2ftWmf8Af2T\/AOIpR8HvEI\/5etM\/7+yf\/G69roqrE3Z4p\/wpzX1fcl1pg\/7bSf8AxFOb4ReImB\/0\nrTOR\/wA9ZP8A43XtNFFkPmZ4wvwi8QBkJutM+X\/prJ\/8RS2\/wg1yN90lzpp5zxLJ\/wDEV7NRRZBz\nM8Um+D\/iKWZn+16Zg9vNk\/8AiKafg34hP\/L3pmf+usn\/AMbr22iiwrs8Xi+EfiOMY+16Zj\/rtJ\/8\nRXpXg3RLrw\/oK2N68LzCR3zCxK4J9wK3qKLILvY\/\/9k=\" width=\"384\" height=\"425\" \/><\/p>\n<p>The buck finally stops at <code>User\u00adInfo\u00adView\u00adModel::\u00adLoad\u00adUser\u00adInfo\u00adAsync<\/code>, because that is a <code>fire_<wbr \/>and_<wbr \/>forget<\/code> coroutine, and <code>fire_<wbr \/>and_<wbr \/>forget<\/code> coroutines treat unhandled exceptions as fatal errors, so the <code>fire_<wbr \/>and_<wbr \/>forget<\/code> promise calls <code>winrt::<wbr \/>terminate<\/code> when an unhandled exception occurs, and that terminates the process.<\/p>\n<p>To fix the problem, we first need to decide what we should do if the UI thread terminates while our asynchronous work is still running. In this particular case, the asynchronous work is retrieving data in order to update the UI, so if the UI no longer exists, then there&#8217;s no point doing the asynchronous work, and we can just abandon it. Therefore, we can add a catch block to the outer <code>fire_<wbr \/>and_<wbr \/>forget<\/code> coroutine to catch and ignore disconnected errors.<\/p>\n<pre>winrt::fire_and_forget UserInfoViewModel::LoadUserInfoAsync() <span style=\"border: solid 1px currentcolor;\">try<\/span>\r\n{\r\n    \u27ec do asynchronous work to update the UI \u27ed\r\n}\r\n<span style=\"border: solid 1px currentcolor; border-bottom: none;\">catch (...)                                                          <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">{                                                                    <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">    \/\/ Ignore disconnected errors, but anything else is fatal.       <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">    \/\/ Disconnected errors mean that our UI thread no longer exists. <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">    if (winrt::to_hresult() != RPC_E_DISCONNECTED)                   <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">    {                                                                <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">        winrt::terminate();                                          <\/span>\r\n<span style=\"border: 1px currentcolor; border-style: none solid;\">    }                                                                <\/span>\r\n<span style=\"border: solid 1px currentcolor; border-top: none;\">}                                                                    <\/span>\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>You can keep trying, but the result won&#8217;t change.<\/p>\n","protected":false},"author":1069,"featured_media":111744,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[25],"class_list":["post-107815","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oldnewthing","tag-code"],"acf":[],"blog_post_summary":"<p>You can keep trying, but the result won&#8217;t change.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/107815","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/users\/1069"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/comments?post=107815"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/posts\/107815\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media\/111744"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/media?parent=107815"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/categories?post=107815"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/oldnewthing\/wp-json\/wp\/v2\/tags?post=107815"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}