Created
March 1, 2025 06:02
-
-
Save terasakisatoshi/b618a9cc71e988b4bf6c8c2de681d7e0 to your computer and use it in GitHub Desktop.
Calling Go functions from Julia
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html><html lang="en"><head><meta name="viewport" content="width=device-width"><meta charset="utf-8"> | |
<meta name="pluto-insertion-spot-meta"> | |
<meta name="theme-color" media="(prefers-color-scheme: light)" content="white"><meta name="theme-color" media="(prefers-color-scheme: dark)" content="#2a2928"><meta name="color-scheme" content="light dark"><link rel="icon" type="image/png" sizes="16x16" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/favicon-16x16.267aebbe.png"><link rel="icon" type="image/png" sizes="32x32" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/favicon-32x32.1b9d3e70.png"><link rel="icon" type="image/png" sizes="96x96" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/favicon-96x96.26e08763.png"><link rel="pluto-external-source" id="pluto-logo-big" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/logo.49a14041.svg"><link rel="pluto-external-source" id="pluto-logo-small" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/favicon_unsaturated.c11d4d33.svg"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.e8dd1839.css"><script type="module" src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/index.ebb7d2e0.js"></script><script type="module" src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.runtime.27dd1a8b.js"></script><script defer>console.log("Pluto.jl, by Fons van der Plas (https://github.com/fonsp), Mikołaj Bochenski (https://github.com/malyvsen), Michiel Dral (https://github.com/dralletje) and friends \uD83C\uDF08");</script><script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/index.f6397f15.js" defer></script><script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/index.2db9e182.js" defer></script><script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.d174451b.js" defer></script><script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.97d6fa3c.js" defer></script><link rel="pluto-external-source" id="vmsg-wasm" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/vmsg.56bb9389.wasm"><link rel="pluto-external-source" id="arrow_up_circle_icon" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/arrow-up-circle-outline.3f146ffe.svg"><link rel="pluto-external-source" id="document_text_icon" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/document-text-outline.8d1e2333.svg"><link rel="pluto-external-source" id="help_circle_icon" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/help-circle-outline.a023036a.svg"><link rel="pluto-external-source" id="open_icon" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/open-outline.87533923.svg"><script id="iframe-resizer-content-window-script" src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.ff0a187e.js" crossorigin defer></script><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.2cab3f5e.css" type="text/css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.46c98966.css" type="text/css" media="all" data-pluto-file="hide-ui"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.bf06bf57.css" type="text/css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.7a28f943.css" type="text/css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.a6a7b91b.css" type="text/css"><script data-pluto-file="launch-parameters"> | |
window.pluto_notebook_id = undefined; | |
window.pluto_isolated_cell_ids = undefined; | |
window.pluto_notebookfile = "data:text/julia;charset=utf-8;base64,IyMjIEEgUGx1dG8uamwgbm90ZWJvb2sgIyMjCiMgdjAuMjAuNAoKdXNpbmcgTWFya2Rvd24KdXNpbmcgSW50ZXJhY3RpdmVVdGlscwoKIyBUaGlzIFBsdXRvIG5vdGVib29rIHVzZXMgQGJpbmQgZm9yIGludGVyYWN0aXZpdHkuIFdoZW4gcnVubmluZyB0aGlzIG5vdGVib29rIG91dHNpZGUgb2YgUGx1dG8sIHRoZSBmb2xsb3dpbmcgJ21vY2sgdmVyc2lvbicgb2YgQGJpbmQgZ2l2ZXMgYm91bmQgdmFyaWFibGVzIGEgZGVmYXVsdCB2YWx1ZSAoaW5zdGVhZCBvZiBhbiBlcnJvcikuCm1hY3JvIGJpbmQoZGVmLCBlbGVtZW50KQogICAgIyEgZm9ybWF0OiBvZmYKICAgIHF1b3RlCiAgICAgICAgbG9jYWwgaXYgPSB0cnkgQmFzZS5sb2FkZWRfbW9kdWxlc1tCYXNlLlBrZ0lkKEJhc2UuVVVJRCgiNmU2OTZjNzItNjU0Mi0yMDY3LTcyNjUtNDIyMDZjNzU2MTUwIiksICJBYnN0cmFjdFBsdXRvRGluZ2V0amVzIildLkJvbmRzLmluaXRpYWxfdmFsdWUgY2F0Y2g7IGIgLT4gbWlzc2luZzsgZW5kCiAgICAgICAgbG9jYWwgZWwgPSAkKGVzYyhlbGVtZW50KSkKICAgICAgICBnbG9iYWwgJChlc2MoZGVmKSkgPSBDb3JlLmFwcGxpY2FibGUoQmFzZS5nZXQsIGVsKSA/IEJhc2UuZ2V0KGVsKSA6IGl2KGVsKQogICAgICAgIGVsCiAgICBlbmQKICAgICMhIGZvcm1hdDogb24KZW5kCgojIOKVlOKVkOKVoSBiYTIzOTE3ZS1mMGIyLTExZWYtMTlkOC04N2JhMGRiMWE1OWIKYmVnaW4KCXVzaW5nIExpYmRsCgl1c2luZyBQbHV0b01vbmFjb0VkaXRvcjogTW9uYWNvRWRpdG9yCmVuZAoKIyDilZTilZDilaEgMjI4OTBlOWEtMTM2MS00ZTQzLTk0NDUtNGMyNTE3NTkwMzhiCm1kIiIiCiMgQ2FsbCBHbyBmdW5jdGlvbnMgZnJvbSBKdWxpYQoKVGhlIHByb2dyYW1pbmcgbGFuZ3VhZ2UgR28gY2FuIG91dHB1dHMgYSBzaGFyZWQgbGlicmFyeSBleHBvc2luZyBHbyBmdW5jdGlvbnMgYXMgYSBDLXN0eWxlIEFQSXMuIFNlZSBWbGFkaW1pciBWaXZpZW4ncyBibG9nIHBvc3QgW0NhbGxpbmcgR28gRnVuY3Rpb25zIGZyb20gT3RoZXIgTGFuZ3VhZ2VzXShodHRwczovL21lZGl1bS5jb20vbGVhcm5pbmctdGhlLWdvLXByb2dyYW1taW5nLWxhbmd1YWdlL2NhbGxpbmctZ28tZnVuY3Rpb25zLWZyb20tb3RoZXItbGFuZ3VhZ2VzLTRjN2Q4YmNjNjliZiMubjczYXM1ZDZkKS4KClRoaXMgUGx1dG8gbm90ZWJvb2sgZGVtb25zdHJhdGVzIGNhbGxpbmcgR28gZnVuY3Rpb25zIGZyb20gSnVsaWEgdXNpbmcgdGhlIGBAY2NhbGxgIG1hY3JvLiAKIiIiCgojIOKVlOKVkOKVoSBjMDMyZmQxMi01NGVmLTRiNTUtYmQ3NC0wNTA1NzNiYTU4MTQKbWQiIiIKWW91IG5lZWQgdG8gaW5zdGFsbCBHbyB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZ28gY29tbWFuZC4KIiIiCgojIOKVlOKVkOKVoSA5MTQ5Y2RiYS00YjE2LTQwZmMtODg5Ni03ZjM5ZGQzNWQ2ODIKYmVnaW4KCXJ1bihgZ28gdmVyc2lvbmApCglub3RoaW5nCmVuZAoKIyDilZTilZDilaEgYTIyZDZmMWItZWU0ZS00Mzc2LWE3ZTEtYjVjMTZmMmU1NTI0Cm1kIiIiClRoZSBmb2xsb3dpbmcgR28gY29kZSBleHBvcnRzIGEgZnVuY3Rpb24gbmFtZWQgYGNhbGNwaWAuCiIiIgoKIyDilZTilZDilaEgZWFiOGUwY2EtOWYyZS00YjlhLTkzYmYtOWY0YmYzNDc3ZjYwCmJlZ2luCglleHQgPSAiLmdvIgogICAgdGFyZ2V0ZmlsZSA9IGpvaW5wYXRoKGZpcnN0KHNwbGl0KEBfX0ZJTEVfXywgIi5qbCM9PSMiKSkpICogZXh0Cglpc2ZpbGUodGFyZ2V0ZmlsZSkgfHwgdG91Y2godGFyZ2V0ZmlsZSkKCWluaXRDb2RlID0gam9pbihyZWFkbGluZXModGFyZ2V0ZmlsZSksICdcbicpCiAgICBAYmluZCBzb3VyY2Vjb2RlIE1vbmFjb0VkaXRvcigiZ28iLCBpbml0Q29kZSwgaGVpZ2h0ID0gNjAwKQplbmQKCiMg4pWU4pWQ4pWhIDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0MwptZCIiIgpXZSBjYW4gZ2VuZXJhdGUgYSBzaGFyZWQgbGlicmFyeSBmcm9tIHRoZSBhYm92ZSBHbyBjb2RlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKJCBnbyBidWlsZCAtbyBsaWJjYWxjcGkuZHlsaWIgLWJ1aWxkbW9kZT1jLXNoYXJlZCBjYWxjcGkuZ28KYGBgCgpTaW5jZSBJIHVzZSBtYWNPUyBpbiBteSBkYWlseSBsaWZlLCB0aGUgZXh0ZW5zaW9uIG9mIGEgc2hhcmVkIGxpYnJhcnkgaXMgYC5keWxpYmAuCklmIHlvdSBhcmUgdXNpbmcgTGludXgsIHRoYXQgc2hvdWxkIGJlIGAuc29gLgoKSnVsaWEgaGFzIHRoZSBgQGNjYWxsYCBtYWNybyB3aGljaCBsb2FkcyB0aGUgZ2VuZXJhdGVkIHNoYXJlZCBsaWJyYXJ5IGFuZCBjYWxscyBmdW5jdGlvbnMgd2l0aGluIGl0LiBTZWUgdGhlIG9mZmljaWFsIEp1bGlhIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuanVsaWFsYW5nLm9yZy9lbi92MS9tYW51YWwvY2FsbGluZy1jLWFuZC1mb3J0cmFuLWNvZGUvKSB0byBsZWFybiBtb3JlIGFib3V0IHRoZSBgQGNjYWxsYCBtYWNyby4KIiIiCgojIOKVlOKVkOKVoSA2Mzc0YTQzNS04OTk1LTQ3ZGYtYWE1Zi01NWVjYjBkMzA4MTQKbWQiIiIKTGV0J3MgY2FsbCB0aGUgYGNhbGNwaWAgZnVuY3Rpb24uCgpgYGBqdWxpYQpOID0gNTAwMApAY2NhbGwgImxpYmNhbGNwaS5keWxpYiIuY2FsY3BpKE46OkNpbnQpOjpDZG91YmxlCmBgYAoKVGhpcyBzaG91bGQgb3V0cHV0IGAzLjE0MS4uLmAuCiIiIgoKIyDilZTilZDilaEgMDk0Y2U0YjctYzEwMC00MjM2LWE1M2UtYmY0Y2MyMGIzY2M2Ck4gPSA1MDAwICMgWW91IGNhbiBjaGFuZ2UgdGhlIHZhbHVlLgoKIyDilZTilZDilaEgNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1Cm1kIiIiCkV4cGFuZCB0aGUgY2VsbCBiZWxvdyB0byBzZWUgd2hhdCB3ZSBkbyBiZWhpbmQgdGhlIHNjZW5lcy4KIiIiCgojIOKVlOKVkOKVoSAyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTkKYmVnaW4KCWNvbnN0IGxpYnBhdGggPSBSZWYoIiIpCglsZXQKCQlzaG91bGRydW4gPSBmYWxzZQoJCWlmIGluaXRDb2RlICE9IHNvdXJjZWNvZGUKCQkJIyBVcGRhdGUgZmlsZQoJCQl3cml0ZSh0YXJnZXRmaWxlLCBzb3VyY2Vjb2RlKQoJCQkjIElmIHVwZGF0ZWQsIHdlIHNob3VsZCBydW4gY29kZQoJCQlzaG91bGRydW4gPSB0cnVlCgkJZW5kCgkJaWYgc2hvdWxkcnVuCgkJCW1rdGVtcGRpcigpIGRvIGQKCQkJCV9saWJuYW1lID0gImxpYiIKCQkJCV9saWJuYW1lICo9ICh0YXJnZXRmaWxlIHw+IGJhc2VuYW1lIHw+IHNwbGl0ZXh0IHw+IGZpcnN0KQoJCQkJX2xpYm5hbWUgKj0gIi4iICogZGxleHQKCQkJCWxpYnBhdGhbXSA9IGpvaW5wYXRoKGQsIF9saWJuYW1lKQoJCQkJd3JpdGUoam9pbnBhdGgoZCwgdGFyZ2V0ZmlsZSksIHNvdXJjZWNvZGUpCgkJCQl0cnkKCQkJCQlydW4oYGdvIGJ1aWxkIC1vICQobGlicGF0aFtdKSAtYnVpbGRtb2RlPWMtc2hhcmVkICQoam9pbnBhdGgoZCwgdGFyZ2V0ZmlsZSkpYCkKCQkJCQlAYXNzZXJ0IGlzZmlsZShsaWJwYXRoW10pCgkJCQkJcHJpbnRsbihAY2NhbGwgKGxpYnBhdGhbXSkuY2FsY3BpKE46OkNpbnQpOjpDZG91YmxlKQoJCQkJY2F0Y2ggZQoJCQkJCWUgaXNhIFByb2Nlc3NGYWlsZWRFeGNlcHRpb24gfHwgcmV0aHJvdyhlKQoJCQkJZW5kCgkJCWVuZAoJCWVuZAoJCW5vdGhpbmcKCWVuZAplbmQKCiMg4pWU4pWQ4pWhIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMQpQTFVUT19QUk9KRUNUX1RPTUxfQ09OVEVOVFMgPSAiIiIKW2RlcHNdCkxpYmRsID0gIjhmMzk5ZGEzLTM1NTctNTY3NS1iNWZmLWZiODMyYzk3Y2JkYiIKUGx1dG9Nb25hY29FZGl0b3IgPSAiNWU5NDNlYWUtMTBkMi00ZWIzLWFkMWUtNThkM2YyZTk2MTRmIgoKW2NvbXBhdF0KUGx1dG9Nb25hY29FZGl0b3IgPSAifjAuMS40IgoiIiIKCiMg4pWU4pWQ4pWhIDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMgpQTFVUT19NQU5JRkVTVF9UT01MX0NPTlRFTlRTID0gIiIiCiMgVGhpcyBmaWxlIGlzIG1hY2hpbmUtZ2VuZXJhdGVkIC0gZWRpdGluZyBpdCBkaXJlY3RseSBpcyBub3QgYWR2aXNlZAoKanVsaWFfdmVyc2lvbiA9ICIxLjExLjMiCm1hbmlmZXN0X2Zvcm1hdCA9ICIyLjAiCnByb2plY3RfaGFzaCA9ICI1YmViZmZlZjM2M2RiYzc2YWY4OTg2MzNjZGIyMzM1MmUzYzcxY2JiIgoKW1tkZXBzLkJhc2U2NF1dCnV1aWQgPSAiMmEwZjQ0ZTMtNmM4My01NWJkLTg3ZTQtYjE5NzhkOThiZDVmIgp2ZXJzaW9uID0gIjEuMTEuMCIKCltbZGVwcy5IeXBlcnRleHRMaXRlcmFsXV0KZGVwcyA9IFsiVHJpY2tzIl0KZ2l0LXRyZWUtc2hhMSA9ICI3MTM0ODEwYjFhZmNlMDRiYmMxMDQ1Y2ExOTg1ZmJlODFjZTE3NjUzIgp1dWlkID0gImFjMTE5MmE4LWY0YjMtNGJmZS1iYTIyLWFmNWI5MmNkM2FiMiIKdmVyc2lvbiA9ICIwLjkuNSIKCltbZGVwcy5MaWJkbF1dCnV1aWQgPSAiOGYzOTlkYTMtMzU1Ny01Njc1LWI1ZmYtZmI4MzJjOTdjYmRiIgp2ZXJzaW9uID0gIjEuMTEuMCIKCltbZGVwcy5QbHV0b01vbmFjb0VkaXRvcl1dCmRlcHMgPSBbIkJhc2U2NCIsICJIeXBlcnRleHRMaXRlcmFsIl0KZ2l0LXRyZWUtc2hhMSA9ICIwMTQ1OTFjNGZlNmZhMTc0NjVlZDY4YTZiYmYxODJiZTViYTg0ZDJhIgp1dWlkID0gIjVlOTQzZWFlLTEwZDItNGViMy1hZDFlLTU4ZDNmMmU5NjE0ZiIKdmVyc2lvbiA9ICIwLjEuNCIKCltbZGVwcy5Ucmlja3NdXQpnaXQtdHJlZS1zaGExID0gIjZjYWU3OTVhNWE5MzEzYmJiNGY2MDY4M2Y3MjYzMzE4ZmM3ZDE1MDUiCnV1aWQgPSAiNDEwYTRiNGQtNDllNC00ZmJjLWFiNmQtY2I3MWIxN2IzNzc1Igp2ZXJzaW9uID0gIjAuMS4xMCIKIiIiCgojIOKVlOKVkOKVoSBDZWxsIG9yZGVyOgojIOKVn+KUgDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YgojIOKVn+KUgGMwMzJmZDEyLTU0ZWYtNGI1NS1iZDc0LTA1MDU3M2JhNTgxNAojIOKVn+KUgDkxNDljZGJhLTRiMTYtNDBmYy04ODk2LTdmMzlkZDM1ZDY4MgojIOKVoOKVkGJhMjM5MTdlLWYwYjItMTFlZi0xOWQ4LTg3YmEwZGIxYTU5YgojIOKVn+KUgGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNAojIOKVn+KUgGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MAojIOKVn+KUgDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0MwojIOKVn+KUgDYzNzRhNDM1LTg5OTUtNDdkZi1hYTVmLTU1ZWNiMGQzMDgxNAojIOKVoOKVkDA5NGNlNGI3LWMxMDAtNDIzNi1hNTNlLWJmNGNjMjBiM2NjNgojIOKVn+KUgDRjNzQ4YTFiLWE1NDYtNDcxOC1hYTYyLTY5NjI4ZmU3MTk1NQojIOKVn+KUgDJlNDQ1Y2ViLTZmOWEtNDVkYi05NjcwLTlhMTVhODRiMDBhOQojIOKVn+KUgDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMQojIOKVn+KUgDAwMDAwMDAwLTAwMDAtMDAwMC0wMDAwLTAwMDAwMDAwMDAwMgo="; | |
window.pluto_disable_ui = true; | |
window.pluto_slider_server_url = undefined; | |
window.pluto_binder_url = "https://mybinder.org/v2/gh/fonsp/pluto-on-binder/v0.20.4"; | |
window.pluto_statefile = "data:;base64,3gASpWJvbmRzgapzb3VyY2Vjb2RlgaV2YWx1ZdoCAC8vIGZpbGVuYW1lOiBjYWxjcGkuZ28KcGFja2FnZSBtYWluCgppbXBvcnQgKAoJIkMiCgkibWF0aCIKKQoKLy8gRXVjbGlkZWFuIGFsZ29yaXRobSBmb3IgR0NECmZ1bmMgZ2NkKGEsIGIgaW50KSBpbnQgewoJZm9yIGIgIT0gMCB7CgkJYSwgYiA9IGIsIGElYgoJfQoJcmV0dXJuIGEKfQoKLy9leHBvcnQgY2FsY3BpCmZ1bmMgY2FsY3BpKE5jIEMuaW50KSBDLmRvdWJsZSB7CgljIDo9IDAKCU4gOj0gaW50KE5jKQoJZm9yIGEgOj0gMTsgYSA8IE47IGErKyB7CgkJZm9yIGIgOj0gMTsgYiA8IE47IGIrKyB7CgkJCWlmIGdjZChhLCBiKSA9PSAxIHsKCQkJCWMrKwoJCQl9CgkJfQoJfQoJcHJvYiA6PSBmbG9hdDY0KGMpIC8gZmxvYXQ2NChOKSAvIGZsb2F0NjQoTikKCXBpX2FwcHJveCA6PSBtYXRoLlNxcnQoNi4wIC8gcHJvYikKCXJldHVybiBDLmRvdWJsZShwaV9hcHByb3gpIC8vIENvbnZlcnQgR28gZmxvYXQ2NCB0byBDIGRvdWJsZQp9CgpmdW5jIG1haW4oKSB7fSAvLyBSZXF1aXJlZCBmb3IgY2dvrGNlbGxfcmVzdWx0c4vZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YoqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnaAe88ZGl2IGNsYXNzPSJtYXJrZG93biI+PGgxPkNhbGwgR28gZnVuY3Rpb25zIGZyb20gSnVsaWE8L2gxPgo8cD5UaGUgcHJvZ3JhbWluZyBsYW5ndWFnZSBHbyBjYW4gb3V0cHV0cyBhIHNoYXJlZCBsaWJyYXJ5IGV4cG9zaW5nIEdvIGZ1bmN0aW9ucyBhcyBhIEMtc3R5bGUgQVBJcy4gU2VlIFZsYWRpbWlyIFZpdmllbiYjMzk7cyBibG9nIHBvc3QgPGEgaHJlZj0iaHR0cHM6Ly9tZWRpdW0uY29tL2xlYXJuaW5nLXRoZS1nby1wcm9ncmFtbWluZy1sYW5ndWFnZS9jYWxsaW5nLWdvLWZ1bmN0aW9ucy1mcm9tLW90aGVyLWxhbmd1YWdlcy00YzdkOGJjYzY5YmYjLm43M2FzNWQ2ZCI+Q2FsbGluZyBHbyBGdW5jdGlvbnMgZnJvbSBPdGhlciBMYW5ndWFnZXM8L2E+LjwvcD4KPHA+VGhpcyBQbHV0byBub3RlYm9vayBkZW1vbnN0cmF0ZXMgY2FsbGluZyBHbyBmdW5jdGlvbnMgZnJvbSBKdWxpYSB1c2luZyB0aGUgPGNvZGU+QGNjYWxsPC9jb2RlPiBtYWNyby4gPC9wPgo8L2Rpdj6kbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdnwqIU/7SmwcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YrlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAK4vK1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SRjMDMyZmQxMi01NGVmLTRiNTUtYmQ3NC0wNTA1NzNiYTU4MTSKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52Vw8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHA+WW91IG5lZWQgdG8gaW5zdGFsbCBHbyB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZ28gY29tbWFuZC48L3A+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2fCkn07EFbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkYzAzMmZkMTItNTRlZi00YjU1LWJkNzQtMDUwNTczYmE1ODE0uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAAWBWLVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MIqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnaBV08Ym9uZCBkZWY9InNvdXJjZWNvZGUiIHVuaXF1ZV9pZD0iRzhmTEJXRUJ3eFMwIj48ZGl2PgoJPHN0eWxlPgogICAgICAgIC5wbHV0by1tb25hY28tZWRpdG9yIHsKICAgICAgICAgICAgd2lkdGg6IDcwMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDYwMHB4OwogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogICAgICAgIH0KICAgIDwvc3R5bGU+Cgk8ZGl2IGlkPSdtb25hY28tZWRpdG9yLWNvbnRhaW5lcicgY2xhc3M9J3BsdXRvLW1vbmFjby1lZGl0b3InPjwvZGl2PgoKPHNjcmlwdD4KCWNvbnN0IG1vbmFjbyA9IGF3YWl0IGltcG9ydCgnaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbS9tb25hY28tZWRpdG9yQDAuNTIuMC8rZXNtJyk7CiAJCgljb25zdCBtb25FZGl0b3IgPSBtb25hY28uZWRpdG9yLmNyZWF0ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9uYWNvLWVkaXRvci1jb250YWluZXInKSwgewoJCXZhbHVlOiAicGFja2FnZSBtYWluXG5cbmltcG9ydCAoXG4JXCJDXCJcbglcIm1hdGhcIlxuKVxuXG4vLyBFdWNsaWRlYW4gYWxnb3JpdGhtIGZvciBHQ0RcbmZ1bmMgZ2NkKGEsIGIgaW50KSBpbnQge1xuCWZvciBiICE9IDAge1xuCQlhLCBiID0gYiwgYSViXG4JfVxuCXJldHVybiBhXG59XG5cbi8vZXhwb3J0IGNhbGNwaVxuZnVuYyBjYWxjcGkoTmMgQy5pbnQpIEMuZG91YmxlIHtcbgljIDo9IDBcbglOIDo9IGludChOYylcbglmb3IgYSA6PSAxOyBhIDwgTjsgYSsrIHtcbgkJZm9yIGIgOj0gMTsgYiA8IE47IGIrKyB7XG4JCQlpZiBnY2QoYSwgYikgPT0gMSB7XG4JCQkJYysrXG4JCQl9XG4JCX1cbgl9XG4JcHJvYiA6PSBmbG9hdDY0KGMpIC8gZmxvYXQ2NChOKSAvIGZsb2F0NjQoTilcbglwaV9hcHByb3ggOj0gbWF0aC5TcXJ0KDYuMCAvIHByb2IpXG4JcmV0dXJuIEMuZG91YmxlKHBpX2FwcHJveCkgLy8gQ29udmVydCBHbyBmbG9hdDY0IHRvIEMgZG91YmxlXG59XG5cbmZ1bmMgbWFpbigpIHt9IC8vIFJlcXVpcmVkIGZvciBjZ28iLAoJCWxhbmd1YWdlOiAiZ28iLAoJCXRoZW1lOiAidnMtZGFyayIKCX0pOwoKCWNvbnN0IHBFID0gY3VycmVudFNjcmlwdC5wYXJlbnRFbGVtZW50OwoJZnVuY3Rpb24gdXBkYXRlX2JvbmQoKSB7CgkJcEUudmFsdWUgPSBtb25FZGl0b3IuZ2V0VmFsdWUoKTsKCQlwRS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgidXBkYXRlIikpOwoJfQoJCgljb25zdCBteUVkaXRvciA9IHBFLnF1ZXJ5U2VsZWN0b3IoIiNtb25hY28tZWRpdG9yLWNvbnRhaW5lciIpOwoJbXlFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCBlPT57CgkJdXBkYXRlX2JvbmQoKTsKCX0pCgkKCXVwZGF0ZV9ib25kKCk7Cjwvc2NyaXB0Pgo8L2Rpdj4KPC9ib25kPqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2fCkvXU5DbBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkZWFiOGUwY2EtOWYyZS00YjlhLTkzYmYtOWY0YmYzNDc3ZjYwuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAApZlLVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDkxNDljZGJhLTRiMTYtNDBmYy04ODk2LTdmMzlkZDM1ZDY4MoqmcXVldWVkwqRsb2dzkYikbGluZf+jbXNnktkhZ28gdmVyc2lvbiBnbzEuMjQuMCBkYXJ3aW4vYXJtNjQKqnRleHQvcGxhaW6nY2VsbF9pZNkkOTE0OWNkYmEtNGIxNi00MGZjLTg4OTYtN2YzOWRkMzVkNjgypmt3YXJnc5CiaWS0UGx1dG9SdW5uZXJfZDFhY2I4MWWkZmlsZdlXL1VzZXJzL2F0ZWxpZXJhcml0aC8uanVsaWEvcGFja2FnZXMvUGx1dG8vYWFXSlYvc3JjL3J1bm5lci9QbHV0b1J1bm5lci9zcmMvaW8vc3Rkb3V0LmpspWdyb3VwpnN0ZG91dKVsZXZlbK5Mb2dMZXZlbCgtNTU1KadydW5uaW5nwqZvdXRwdXSGpGJvZHmgpG1pbWWqdGV4dC9wbGFpbqxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2fCkkj6Q2rBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkOTE0OWNkYmEtNGIxNi00MGZjLTg4OTYtN2YzOWRkMzVkNjgyuWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAM6E0bVwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNIqmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnZZzxkaXYgY2xhc3M9Im1hcmtkb3duIj48cD5UaGUgZm9sbG93aW5nIEdvIGNvZGUgZXhwb3J0cyBhIGZ1bmN0aW9uIG5hbWVkIDxjb2RlPmNhbGNwaTwvY29kZT4uPC9wPgo8L2Rpdj6kbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdnwpx5wxdawcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNLlkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAGVJq1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SQ2Mzc0YTQzNS04OTk1LTQ3ZGYtYWE1Zi01NWVjYjBkMzA4MTSKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R52gEFPGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPkxldCYjMzk7cyBjYWxsIHRoZSA8Y29kZT5jYWxjcGk8L2NvZGU+IGZ1bmN0aW9uLjwvcD4KPHByZT48Y29kZSBjbGFzcz0ibGFuZ3VhZ2UtanVsaWEiPk4gJiM2MTsgNTAwMApAY2NhbGwgJnF1b3Q7bGliY2FsY3BpLmR5bGliJnF1b3Q7LmNhbGNwaSYjNDA7Tjo6Q2ludCYjNDE7OjpDZG91YmxlPC9jb2RlPjwvcHJlPgo8cD5UaGlzIHNob3VsZCBvdXRwdXQgPGNvZGU+My4xNDEuLi48L2NvZGU+LjwvcD4KPC9kaXY+pG1pbWWpdGV4dC9odG1srHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZ8Ki2W2wesHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQ2Mzc0YTQzNS04OTk1LTQ3ZGYtYWE1Zi01NWVjYjBkMzA4MTS5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AB1cStXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkYmEyMzkxN2UtZjBiMi0xMWVmLTE5ZDgtODdiYTBkYjFhNTliiqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZ8KS9bueWsHBlcnNpc3RfanNfc3RhdGXCt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SRiYTIzOTE3ZS1mMGIyLTExZWYtMTlkOC04N2JhMGRiMWE1OWK5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc4AAtUZtXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkMmU0NDVjZWItNmY5YS00NWRiLTk2NzAtOWExNWE4NGIwMGE5iqZxdWV1ZWTCpGxvZ3ORiKRsaW5l/6Ntc2eSszMuMTQxNzIzMTUxMjU4NjMyNgqqdGV4dC9wbGFpbqdjZWxsX2lk2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTmma3dhcmdzkKJpZLRQbHV0b1J1bm5lcl9kMWFjYjgxZaRmaWxl2VcvVXNlcnMvYXRlbGllcmFyaXRoLy5qdWxpYS9wYWNrYWdlcy9QbHV0by9hYVdKVi9zcmMvcnVubmVyL1BsdXRvUnVubmVyL3NyYy9pby9zdGRvdXQuamylZ3JvdXCmc3Rkb3V0pWxldmVsrkxvZ0xldmVsKC01NTUpp3J1bm5pbmfCpm91dHB1dIakYm9keaCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZcCybGFzdF9ydW5fdGltZXN0YW1wy0HZ8KdMQsU/sHBlcnNpc3RfanNfc3RhdGXDt2hhc19wbHV0b19ob29rX2ZlYXR1cmVzwqdjZWxsX2lk2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTm5ZGVwZW5kc19vbl9kaXNhYmxlZF9jZWxsc8KncnVudGltZc5bF3qftXB1Ymxpc2hlZF9vYmplY3Rfa2V5c5C4ZGVwZW5kc19vbl9za2lwcGVkX2NlbGxzwqdlcnJvcmVkwtkkNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1iqZxdWV1ZWTCpGxvZ3OQp3J1bm5pbmfCpm91dHB1dIakYm9kedlePGRpdiBjbGFzcz0ibWFya2Rvd24iPjxwPkV4cGFuZCB0aGUgY2VsbCBiZWxvdyB0byBzZWUgd2hhdCB3ZSBkbyBiZWhpbmQgdGhlIHNjZW5lcy48L3A+CjwvZGl2PqRtaW1lqXRleHQvaHRtbKxyb290YXNzaWduZWXAsmxhc3RfcnVuX3RpbWVzdGFtcMtB2fCn/ZDExrBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXOAAYU97VwdWJsaXNoZWRfb2JqZWN0X2tleXOQuGRlcGVuZHNfb25fc2tpcHBlZF9jZWxsc8KnZXJyb3JlZMLZJDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0M4qmcXVldWVkwqRsb2dzkKdydW5uaW5nwqZvdXRwdXSGpGJvZHnaAqY8ZGl2IGNsYXNzPSJtYXJrZG93biI+PHA+V2UgY2FuIGdlbmVyYXRlIGEgc2hhcmVkIGxpYnJhcnkgZnJvbSB0aGUgYWJvdmUgR28gY29kZSB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDo8L3A+CjxwcmU+PGNvZGUgY2xhc3M9Imxhbmd1YWdlLXNoIj4mIzM2OyBnbyBidWlsZCAtbyBsaWJjYWxjcGkuZHlsaWIgLWJ1aWxkbW9kZSYjNjE7Yy1zaGFyZWQgY2FsY3BpLmdvPC9jb2RlPjwvcHJlPgo8cD5TaW5jZSBJIHVzZSBtYWNPUyBpbiBteSBkYWlseSBsaWZlLCB0aGUgZXh0ZW5zaW9uIG9mIGEgc2hhcmVkIGxpYnJhcnkgaXMgPGNvZGU+LmR5bGliPC9jb2RlPi4gSWYgeW91IGFyZSB1c2luZyBMaW51eCwgdGhhdCBzaG91bGQgYmUgPGNvZGU+LnNvPC9jb2RlPi48L3A+CjxwPkp1bGlhIGhhcyB0aGUgPGNvZGU+QGNjYWxsPC9jb2RlPiBtYWNybyB3aGljaCBsb2FkcyB0aGUgZ2VuZXJhdGVkIHNoYXJlZCBsaWJyYXJ5IGFuZCBjYWxscyBmdW5jdGlvbnMgd2l0aGluIGl0LiBTZWUgdGhlIG9mZmljaWFsIEp1bGlhIDxhIGhyZWY9Imh0dHBzOi8vZG9jcy5qdWxpYWxhbmcub3JnL2VuL3YxL21hbnVhbC9jYWxsaW5nLWMtYW5kLWZvcnRyYW4tY29kZS8iPmRvY3VtZW50YXRpb248L2E+IHRvIGxlYXJuIG1vcmUgYWJvdXQgdGhlIDxjb2RlPkBjY2FsbDwvY29kZT4gbWFjcm8uPC9wPgo8L2Rpdj6kbWltZal0ZXh0L2h0bWyscm9vdGFzc2lnbmVlwLJsYXN0X3J1bl90aW1lc3RhbXDLQdnwqLWHq72wcGVyc2lzdF9qc19zdGF0ZcK3aGFzX3BsdXRvX2hvb2tfZmVhdHVyZXPCp2NlbGxfaWTZJDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0M7lkZXBlbmRzX29uX2Rpc2FibGVkX2NlbGxzwqdydW50aW1lzgAJmtK1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTC2SQwOTRjZTRiNy1jMTAwLTQyMzYtYTUzZS1iZjRjYzIwYjNjYzaKpnF1ZXVlZMKkbG9nc5CncnVubmluZ8Kmb3V0cHV0hqRib2R5pDUwMDCkbWltZap0ZXh0L3BsYWlurHJvb3Rhc3NpZ25lZaFOsmxhc3RfcnVuX3RpbWVzdGFtcMtB2fCnQVTF/LBwZXJzaXN0X2pzX3N0YXRlwrdoYXNfcGx1dG9faG9va19mZWF0dXJlc8KnY2VsbF9pZNkkMDk0Y2U0YjctYzEwMC00MjM2LWE1M2UtYmY0Y2MyMGIzY2M2uWRlcGVuZHNfb25fZGlzYWJsZWRfY2VsbHPCp3J1bnRpbWXNUbW1cHVibGlzaGVkX29iamVjdF9rZXlzkLhkZXBlbmRzX29uX3NraXBwZWRfY2VsbHPCp2Vycm9yZWTCq3N0YXR1c190cmVlhaRuYW1lqG5vdGVib29rqHN1YnRhc2tzhKZzYXZpbmeFpG5hbWWmc2F2aW5nqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2fCot0tDPadzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8Ki3Sx91qXdvcmtzcGFjZYWkbmFtZal3b3Jrc3BhY2Woc3VidGFza3OCrGluaXRfcHJvY2Vzc4WkbmFtZaxpbml0X3Byb2Nlc3Ooc3VidGFza3OEoTSFpG5hbWWhNKhzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdnwpIvNtrOnc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCki7uGuqExhaRuYW1loTGoc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZ8KSLubK8p3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdnwpIu01dShMoWkbmFtZaEyqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2fCki7m44adzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8KSLubLMoTOFpG5hbWWhM6hzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdnwpIu7hranc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCki7m46atmaW5pc2hlZF9hdMtB2fCki829y6dzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8KSLtNXDrmNyZWF0ZV9wcm9jZXNzhaRuYW1lrmNyZWF0ZV9wcm9jZXNzqHN1YnRhc2tzgtkhTG9hZGluZyBub3RlYm9vayBib290IGVudmlyb25tZW50haRuYW1l2SFMb2FkaW5nIG5vdGVib29rIGJvb3QgZW52aXJvbm1lbnSoc3VidGFza3OAq2ZpbmlzaGVkX2F0y0HZ8KSLtM3Rp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdnwpItA5cWwU3RhcnRpbmcgcHJvY2Vzc4WkbmFtZbBTdGFydGluZyBwcm9jZXNzqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2fCki0DfJqdzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8KSLHhoaq2ZpbmlzaGVkX2F0y0HZ8KSLtM3Np3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdnwpIseGeurZmluaXNoZWRfYXTLQdnwpIvNvdOnc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCkix4ZzqNwa2eFpG5hbWWjcGtnqHN1YnRhc2tzgahhbmFseXNpc4WkbmFtZahhbmFseXNpc6hzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdnwqLZanP6nc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCotlqZGKtmaW5pc2hlZF9hdMtB2fCotlqdBqdzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8Ki2WpkTo3J1boWkbmFtZaNydW6oc3VidGFza3OCsHJlc29sdmVfdG9wb2xvZ3mFpG5hbWWwcmVzb2x2ZV90b3BvbG9neahzdWJ0YXNrc4CrZmluaXNoZWRfYXTLQdnwqLZa94Onc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCotlrcI6hldmFsdWF0ZYWkbmFtZahldmFsdWF0ZahzdWJ0YXNrc4GhMYWkbmFtZaExqHN1YnRhc2tzgKtmaW5pc2hlZF9hdMtB2fCotltsmKdzdWNjZXNzw6pzdGFydGVkX2F0y0HZ8Ki2WxG6q2ZpbmlzaGVkX2F0y0HZ8Ki2W2zsp3N1Y2Nlc3PDqnN0YXJ0ZWRfYXTLQdnwqLZa94OrZmluaXNoZWRfYXTLQdnwqLZbbOinc3VjY2Vzc8Oqc3RhcnRlZF9hdMtB2fCotlrcFqtmaW5pc2hlZF9hdMCnc3VjY2Vzc8Cqc3RhcnRlZF9hdMtB2fCkiofR6bFjZWxsX2RlcGVuZGVuY2llc4vZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YrRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGMwMzJmZDEyLTU0ZWYtNGI1NS1iZDc0LTA1MDU3M2JhNTgxNIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGMwMzJmZDEyLTU0ZWYtNGI1NS1iZDc0LTA1MDU3M2JhNTgxNLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MLRkb3duc3RyZWFtX2NlbGxzX21hcISoaW5pdENvZGWR2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTmqdGFyZ2V0ZmlsZZHZJDJlNDQ1Y2ViLTZmOWEtNDVkYi05NjcwLTlhMTVhODRiMDBhOaNleHSQqnNvdXJjZWNvZGWR2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTmydXBzdHJlYW1fY2VsbHNfbWFwj6lAX19GSUxFX1+QqXJlYWRsaW5lc5DZI1BsdXRvUnVubmVyLlBsdXRvUnVubmVyLmNyZWF0ZV9ib25kkKhqb2lucGF0aJClZmlyc3SQpUBiaW5kkKxNb25hY29FZGl0b3KR2SRiYTIzOTE3ZS1mMGIyLTExZWYtMTlkOC04N2JhMGRiMWE1OWKmaXNmaWxlkKV0b3VjaJCkam9pbpCrUGx1dG9SdW5uZXKQtFBsdXRvUnVubmVyLkJhc2UuZ2V0kKEqkLtQbHV0b1J1bm5lci5Db3JlLmFwcGxpY2FibGWQpXNwbGl0kNkkOTE0OWNkYmEtNGIxNi00MGZjLTg4OTYtN2YzOWRkMzVkNjgyhLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkOTE0OWNkYmEtNGIxNi00MGZjLTg4OTYtN2YzOWRkMzVkNjgytGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCEo3J1bpCnY21kX2dlbpCkQGNtZJCnbm90aGluZ5DZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJDYzNzRhNDM1LTg5OTUtNDdkZi1hYTVmLTU1ZWNiMGQzMDgxNIS0cHJlY2VkZW5jZV9oZXVyaXN0aWMJp2NlbGxfaWTZJDYzNzRhNDM1LTg5OTUtNDdkZi1hYTVmLTU1ZWNiMGQzMDgxNLRkb3duc3RyZWFtX2NlbGxzX21hcICydXBzdHJlYW1fY2VsbHNfbWFwgqdAbWRfc3RykKhnZXRpbmRleJDZJGJhMjM5MTdlLWYwYjItMTFlZi0xOWQ4LTg3YmEwZGIxYTU5YoS0cHJlY2VkZW5jZV9oZXVyaXN0aWMHp2NlbGxfaWTZJGJhMjM5MTdlLWYwYjItMTFlZi0xOWQ4LTg3YmEwZGIxYTU5YrRkb3duc3RyZWFtX2NlbGxzX21hcIKlTGliZGyQrE1vbmFjb0VkaXRvcpHZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MLJ1cHN0cmVhbV9jZWxsc19tYXCA2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTmEtHByZWNlZGVuY2VfaGV1cmlzdGljCadjZWxsX2lk2SQyZTQ0NWNlYi02ZjlhLTQ1ZGItOTY3MC05YTE1YTg0YjAwYTm0ZG93bnN0cmVhbV9jZWxsc19tYXCBp2xpYnBhdGiQsnVwc3RyZWFtX2NlbGxzX21hcN4AIadAYXNzZXJ0kKRAY21kkKhqb2lucGF0aJCpbWt0ZW1wZGlykKdwcmludGxukKdyZXRocm93kKdub3RoaW5nkKhpbml0Q29kZZHZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MKdDZG91YmxlkKp0YXJnZXRmaWxlkdkkZWFiOGUwY2EtOWYyZS00YjlhLTkzYmYtOWY0YmYzNDc3ZjYwoU6R2SQwOTRjZTRiNy1jMTAwLTQyMzYtYTUzZS1iZjRjYzIwYjNjYzaiIT2Qoj09kKRDaW50kLNCYXNlLkFzc2VydGlvbkVycm9ykKVkbGV4dJCqQmFzZS50aHJvd5CoYmFzZW5hbWWQpWZpcnN0kKJ8PpCmQGNjYWxskKZpc2ZpbGWQo2lzYZCkQmFzZZCoc3BsaXRleHSQtlByb2Nlc3NGYWlsZWRFeGNlcHRpb26Qo3J1bpCld3JpdGWQoSqQqnNvdXJjZWNvZGWR2SRlYWI4ZTBjYS05ZjJlLTRiOWEtOTNiZi05ZjRiZjM0NzdmNjCsQmFzZS5jbWRfZ2VukKNSZWaQpWNjYWxskNkkNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1tGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCCp0BtZF9zdHKQqGdldGluZGV4kNkkOTk3OWEyMzUtMWVjZC00MWNkLWFmNjEtYzgyMWNmN2FmMDQzhLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkOTk3OWEyMzUtMWVjZC00MWNkLWFmNjEtYzgyMWNmN2FmMDQztGRvd25zdHJlYW1fY2VsbHNfbWFwgLJ1cHN0cmVhbV9jZWxsc19tYXCCp0BtZF9zdHKQqGdldGluZGV4kNkkMDk0Y2U0YjctYzEwMC00MjM2LWE1M2UtYmY0Y2MyMGIzY2M2hLRwcmVjZWRlbmNlX2hldXJpc3RpYwmnY2VsbF9pZNkkMDk0Y2U0YjctYzEwMC00MjM2LWE1M2UtYmY0Y2MyMGIzY2M2tGRvd25zdHJlYW1fY2VsbHNfbWFwgaFOkdkkMmU0NDVjZWItNmY5YS00NWRiLTk2NzAtOWExNWE4NGIwMGE5snVwc3RyZWFtX2NlbGxzX21hcIC0Y2VsbF9leGVjdXRpb25fb3JkZXKb2SRiYTIzOTE3ZS1mMGIyLTExZWYtMTlkOC04N2JhMGRiMWE1OWLZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YtkkYzAzMmZkMTItNTRlZi00YjU1LWJkNzQtMDUwNTczYmE1ODE02SQ5MTQ5Y2RiYS00YjE2LTQwZmMtODg5Ni03ZjM5ZGQzNWQ2ODLZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNNkkZWFiOGUwY2EtOWYyZS00YjlhLTkzYmYtOWY0YmYzNDc3ZjYw2SQ5OTc5YTIzNS0xZWNkLTQxY2QtYWY2MS1jODIxY2Y3YWYwNDPZJDYzNzRhNDM1LTg5OTUtNDdkZi1hYTVmLTU1ZWNiMGQzMDgxNNkkMDk0Y2U0YjctYzEwMC00MjM2LWE1M2UtYmY0Y2MyMGIzY2M22SQ0Yzc0OGExYi1hNTQ2LTQ3MTgtYWE2Mi02OTYyOGZlNzE5NTXZJDJlNDQ1Y2ViLTZmOWEtNDVkYi05NjcwLTlhMTVhODRiMDBhObRsYXN0X2hvdF9yZWxvYWRfdGltZcsAAAAAAAAAAKlzaG9ydHBhdGipY2FsY3BpLmpsrnByb2Nlc3Nfc3RhdHVzpXJlYWR5pHBhdGjZSy9Vc2Vycy9hdGVsaWVyYXJpdGgvd29yay90ZXJhc2FraXNhdG9zaGkvTXlHby5qbC9wbGF5Z3JvdW5kL3BsdXRvL2NhbGNwaS5qbK1wbHV0b192ZXJzaW9up3YwLjIwLjSubGFzdF9zYXZlX3RpbWXLQdnwqLdLH2CqY2VsbF9vcmRlcpvZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YtkkYzAzMmZkMTItNTRlZi00YjU1LWJkNzQtMDUwNTczYmE1ODE02SQ5MTQ5Y2RiYS00YjE2LTQwZmMtODg5Ni03ZjM5ZGQzNWQ2ODLZJGJhMjM5MTdlLWYwYjItMTFlZi0xOWQ4LTg3YmEwZGIxYTU5YtkkYTIyZDZmMWItZWU0ZS00Mzc2LWE3ZTEtYjVjMTZmMmU1NTI02SRlYWI4ZTBjYS05ZjJlLTRiOWEtOTNiZi05ZjRiZjM0NzdmNjDZJDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0M9kkNjM3NGE0MzUtODk5NS00N2RmLWFhNWYtNTVlY2IwZDMwODE02SQwOTRjZTRiNy1jMTAwLTQyMzYtYTUzZS1iZjRjYzIwYjNjYzbZJDRjNzQ4YTFiLWE1NDYtNDcxOC1hYTYyLTY5NjI4ZmU3MTk1NdkkMmU0NDVjZWItNmY5YS00NWRiLTk2NzAtOWExNWE4NGIwMGE5sXB1Ymxpc2hlZF9vYmplY3RzgKVuYnBrZ4qvaW5zdGFsbF90aW1lX25zzuAl5FOsaW5zdGFudGlhdGVkw7JpbnN0YWxsZWRfdmVyc2lvbnOCpUxpYmRspnN0ZGxpYrFQbHV0b01vbmFjb0VkaXRvcqUwLjEuNLB0ZXJtaW5hbF9vdXRwdXRzg6puYnBrZ19zeW5j2gKZChtbMG0bWzFtQWRkaW5nIHBhY2thZ2VzLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gICBSZXNvbHZpbmcbWzIybRtbMzltIHBhY2thZ2UgdmVyc2lvbnMuLi4KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3ByaXZhdGUvdmFyL2ZvbGRlcnMveTkveGg5NGZ2cGQyaGw1MHpzMDI0aGhqbDE4MDAwMGduL1QvamxfcnMxN1JVL1Byb2plY3QudG9tbGAKICAbWzkwbVs4ZjM5OWRhM10gG1szOW0bWzkybSsgTGliZGwgdjEuMTEuMBtbMzltChtbMzJtG1sxbSAgICBVcGRhdGluZxtbMjJtG1szOW0gYC9wcml2YXRlL3Zhci9mb2xkZXJzL3k5L3hoOTRmdnBkMmhsNTB6czAyNGhoamwxODAwMDBnbi9UL2psX3JzMTdSVS9NYW5pZmVzdC50b21sYAogIBtbOTBtWzhmMzk5ZGEzXSAbWzM5bRtbOTJtKyBMaWJkbCB2MS4xMS4wG1szOW0KG1szMm0bWzFtTG9hZGluZxtbMjJtG1szOW0gcGFja2FnZXMuLi4KChtbMG0bWzFtSW5zdGFudGlhdGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KChtbMG0bWzFtUHJlY29tcGlsaW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQobWzMybRtbMW0gIEFjdGl2YXRpbmcbWzIybRtbMzltIHByb2plY3QgYXQgYC9wcml2YXRlL3Zhci9mb2xkZXJzL3k5L3hoOTRmdnBkMmhsNTB6czAyNGhoamwxODAwMDBnbi9UL2psX3JzMTdSVWClTGliZGzaApkKG1swbRtbMW1BZGRpbmcgcGFja2FnZXMuLi4bWzIybQobWzkwbT09PRtbMzltChtbMzJtG1sxbSAgIFJlc29sdmluZxtbMjJtG1szOW0gcGFja2FnZSB2ZXJzaW9ucy4uLgobWzMybRtbMW0gICAgVXBkYXRpbmcbWzIybRtbMzltIGAvcHJpdmF0ZS92YXIvZm9sZGVycy95OS94aDk0ZnZwZDJobDUwenMwMjRoaGpsMTgwMDAwZ24vVC9qbF9yczE3UlUvUHJvamVjdC50b21sYAogIBtbOTBtWzhmMzk5ZGEzXSAbWzM5bRtbOTJtKyBMaWJkbCB2MS4xMS4wG1szOW0KG1szMm0bWzFtICAgIFVwZGF0aW5nG1syMm0bWzM5bSBgL3ByaXZhdGUvdmFyL2ZvbGRlcnMveTkveGg5NGZ2cGQyaGw1MHpzMDI0aGhqbDE4MDAwMGduL1QvamxfcnMxN1JVL01hbmlmZXN0LnRvbWxgCiAgG1s5MG1bOGYzOTlkYTNdIBtbMzltG1s5Mm0rIExpYmRsIHYxLjExLjAbWzM5bQobWzMybRtbMW1Mb2FkaW5nG1syMm0bWzM5bSBwYWNrYWdlcy4uLgoKG1swbRtbMW1JbnN0YW50aWF0aW5nLi4uG1syMm0KG1s5MG09PT0bWzM5bQoKG1swbRtbMW1QcmVjb21waWxpbmcuLi4bWzIybQobWzkwbT09PRtbMzltChtbMzJtG1sxbSAgQWN0aXZhdGluZxtbMjJtG1szOW0gcHJvamVjdCBhdCBgL3ByaXZhdGUvdmFyL2ZvbGRlcnMveTkveGg5NGZ2cGQyaGw1MHpzMDI0aGhqbDE4MDAwMGduL1QvamxfcnMxN1JVYLFQbHV0b01vbmFjb0VkaXRvctoB3AobWzBtG1sxbUluc3RhbnRpYXRpbmcuLi4bWzIybQobWzkwbT09PRtbMzltCgobWzBtG1sxbVJlc29sdmluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICBObyBDaGFuZ2VzG1syMm0bWzM5bSB0byBgL3ByaXZhdGUvdmFyL2ZvbGRlcnMveTkveGg5NGZ2cGQyaGw1MHpzMDI0aGhqbDE4MDAwMGduL1QvamxfcnMxN1JVL1Byb2plY3QudG9tbGAKG1szMm0bWzFtICBObyBDaGFuZ2VzG1syMm0bWzM5bSB0byBgL3ByaXZhdGUvdmFyL2ZvbGRlcnMveTkveGg5NGZ2cGQyaGw1MHpzMDI0aGhqbDE4MDAwMGduL1QvamxfcnMxN1JVL01hbmlmZXN0LnRvbWxgCgobWzBtG1sxbVByZWNvbXBpbGluZy4uLhtbMjJtChtbOTBtPT09G1szOW0KG1szMm0bWzFtICBBY3RpdmF0aW5nG1syMm0bWzM5bSBwcm9qZWN0IGF0IGAvcHJpdmF0ZS92YXIvZm9sZGVycy95OS94aDk0ZnZwZDJobDUwenMwMjRoaGpsMTgwMDAwZ24vVC9qbF9yczE3UlVgp2VuYWJsZWTDt3Jlc3RhcnRfcmVjb21tZW5kZWRfbXNnwLRyZXN0YXJ0X3JlcXVpcmVkX21zZ8CtYnVzeV9wYWNrYWdlc5C2d2FpdGluZ19mb3JfcGVybWlzc2lvbsLZLHdhaXRpbmdfZm9yX3Blcm1pc3Npb25fYnV0X3Byb2JhYmx5X2Rpc2FibGVkwqtjZWxsX2lucHV0c4vZJDIyODkwZTlhLTEzNjEtNGU0My05NDQ1LTRjMjUxNzU5MDM4YoSnY2VsbF9pZNkkMjI4OTBlOWEtMTM2MS00ZTQzLTk0NDUtNGMyNTE3NTkwMzhipGNvZGXaAa9tZCIiIgojIENhbGwgR28gZnVuY3Rpb25zIGZyb20gSnVsaWEKClRoZSBwcm9ncmFtaW5nIGxhbmd1YWdlIEdvIGNhbiBvdXRwdXRzIGEgc2hhcmVkIGxpYnJhcnkgZXhwb3NpbmcgR28gZnVuY3Rpb25zIGFzIGEgQy1zdHlsZSBBUElzLiBTZWUgVmxhZGltaXIgVml2aWVuJ3MgYmxvZyBwb3N0IFtDYWxsaW5nIEdvIEZ1bmN0aW9ucyBmcm9tIE90aGVyIExhbmd1YWdlc10oaHR0cHM6Ly9tZWRpdW0uY29tL2xlYXJuaW5nLXRoZS1nby1wcm9ncmFtbWluZy1sYW5ndWFnZS9jYWxsaW5nLWdvLWZ1bmN0aW9ucy1mcm9tLW90aGVyLWxhbmd1YWdlcy00YzdkOGJjYzY5YmYjLm43M2FzNWQ2ZCkuCgpUaGlzIFBsdXRvIG5vdGVib29rIGRlbW9uc3RyYXRlcyBjYWxsaW5nIEdvIGZ1bmN0aW9ucyBmcm9tIEp1bGlhIHVzaW5nIHRoZSBgQGNjYWxsYCBtYWNyby4gCiIiIqhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkYzAzMmZkMTItNTRlZi00YjU1LWJkNzQtMDUwNTczYmE1ODE0hKdjZWxsX2lk2SRjMDMyZmQxMi01NGVmLTRiNTUtYmQ3NC0wNTA1NzNiYTU4MTSkY29kZdlCbWQiIiIKWW91IG5lZWQgdG8gaW5zdGFsbCBHbyB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZ28gY29tbWFuZC4KIiIiqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SRlYWI4ZTBjYS05ZjJlLTRiOWEtOTNiZi05ZjRiZjM0NzdmNjCEp2NlbGxfaWTZJGVhYjhlMGNhLTlmMmUtNGI5YS05M2JmLTlmNGJmMzQ3N2Y2MKRjb2Rl2fFiZWdpbgoJZXh0ID0gIi5nbyIKICAgIHRhcmdldGZpbGUgPSBqb2lucGF0aChmaXJzdChzcGxpdChAX19GSUxFX18sICIuamwjPT0jIikpKSAqIGV4dAoJaXNmaWxlKHRhcmdldGZpbGUpIHx8IHRvdWNoKHRhcmdldGZpbGUpCglpbml0Q29kZSA9IGpvaW4ocmVhZGxpbmVzKHRhcmdldGZpbGUpLCAnXG4nKQogICAgQGJpbmQgc291cmNlY29kZSBNb25hY29FZGl0b3IoImdvIiwgaW5pdENvZGUsIGhlaWdodCA9IDYwMCkKZW5kqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQ5MTQ5Y2RiYS00YjE2LTQwZmMtODg5Ni03ZjM5ZGQzNWQ2ODKEp2NlbGxfaWTZJDkxNDljZGJhLTRiMTYtNDBmYy04ODk2LTdmMzlkZDM1ZDY4MqRjb2Rl2SViZWdpbgoJcnVuKGBnbyB2ZXJzaW9uYCkKCW5vdGhpbmcKZW5kqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SRhMjJkNmYxYi1lZTRlLTQzNzYtYTdlMS1iNWMxNmYyZTU1MjSEp2NlbGxfaWTZJGEyMmQ2ZjFiLWVlNGUtNDM3Ni1hN2UxLWI1YzE2ZjJlNTUyNKRjb2Rl2UJtZCIiIgpUaGUgZm9sbG93aW5nIEdvIGNvZGUgZXhwb3J0cyBhIGZ1bmN0aW9uIG5hbWVkIGBjYWxjcGlgLgoiIiKobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDYzNzRhNDM1LTg5OTUtNDdkZi1hYTVmLTU1ZWNiMGQzMDgxNISnY2VsbF9pZNkkNjM3NGE0MzUtODk5NS00N2RmLWFhNWYtNTVlY2IwZDMwODE0pGNvZGXZlG1kIiIiCkxldCdzIGNhbGwgdGhlIGBjYWxjcGlgIGZ1bmN0aW9uLgoKYGBganVsaWEKTiA9IDUwMDAKQGNjYWxsICJsaWJjYWxjcGkuZHlsaWIiLmNhbGNwaShOOjpDaW50KTo6Q2RvdWJsZQpgYGAKClRoaXMgc2hvdWxkIG91dHB1dCBgMy4xNDEuLi5gLgoiIiKobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJGJhMjM5MTdlLWYwYjItMTFlZi0xOWQ4LTg3YmEwZGIxYTU5YoSnY2VsbF9pZNkkYmEyMzkxN2UtZjBiMi0xMWVmLTE5ZDgtODdiYTBkYjFhNTlipGNvZGXZPWJlZ2luCgl1c2luZyBMaWJkbAoJdXNpbmcgUGx1dG9Nb25hY29FZGl0b3I6IE1vbmFjb0VkaXRvcgplbmSobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMLZJDJlNDQ1Y2ViLTZmOWEtNDVkYi05NjcwLTlhMTVhODRiMDBhOYSnY2VsbF9pZNkkMmU0NDVjZWItNmY5YS00NWRiLTk2NzAtOWExNWE4NGIwMGE5pGNvZGXaAsNiZWdpbgoJY29uc3QgbGlicGF0aCA9IFJlZigiIikKCWxldAoJCXNob3VsZHJ1biA9IGZhbHNlCgkJaWYgaW5pdENvZGUgIT0gc291cmNlY29kZQoJCQkjIFVwZGF0ZSBmaWxlCgkJCXdyaXRlKHRhcmdldGZpbGUsIHNvdXJjZWNvZGUpCgkJCSMgSWYgdXBkYXRlZCwgd2Ugc2hvdWxkIHJ1biBjb2RlCgkJCXNob3VsZHJ1biA9IHRydWUKCQllbmQKCQlpZiBzaG91bGRydW4KCQkJbWt0ZW1wZGlyKCkgZG8gZAoJCQkJX2xpYm5hbWUgPSAibGliIgoJCQkJX2xpYm5hbWUgKj0gKHRhcmdldGZpbGUgfD4gYmFzZW5hbWUgfD4gc3BsaXRleHQgfD4gZmlyc3QpCgkJCQlfbGlibmFtZSAqPSAiLiIgKiBkbGV4dAoJCQkJbGlicGF0aFtdID0gam9pbnBhdGgoZCwgX2xpYm5hbWUpCgkJCQl3cml0ZShqb2lucGF0aChkLCB0YXJnZXRmaWxlKSwgc291cmNlY29kZSkKCQkJCXRyeQoJCQkJCXJ1bihgZ28gYnVpbGQgLW8gJChsaWJwYXRoW10pIC1idWlsZG1vZGU9Yy1zaGFyZWQgJChqb2lucGF0aChkLCB0YXJnZXRmaWxlKSlgKQoJCQkJCUBhc3NlcnQgaXNmaWxlKGxpYnBhdGhbXSkKCQkJCQlwcmludGxuKEBjY2FsbCAobGlicGF0aFtdKS5jYWxjcGkoTjo6Q2ludCk6OkNkb3VibGUpCgkJCQljYXRjaCBlCgkJCQkJZSBpc2EgUHJvY2Vzc0ZhaWxlZEV4Y2VwdGlvbiB8fCByZXRocm93KGUpCgkJCQllbmQKCQkJZW5kCgkJZW5kCgkJbm90aGluZwoJZW5kCmVuZKhtZXRhZGF0YYOpc2hvd19sb2dzw6hkaXNhYmxlZMKuc2tpcF9hc19zY3JpcHTCq2NvZGVfZm9sZGVkw9kkNGM3NDhhMWItYTU0Ni00NzE4LWFhNjItNjk2MjhmZTcxOTU1hKdjZWxsX2lk2SQ0Yzc0OGExYi1hNTQ2LTQ3MTgtYWE2Mi02OTYyOGZlNzE5NTWkY29kZdlEbWQiIiIKRXhwYW5kIHRoZSBjZWxsIGJlbG93IHRvIHNlZSB3aGF0IHdlIGRvIGJlaGluZCB0aGUgc2NlbmVzLgoiIiKobWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMPZJDk5NzlhMjM1LTFlY2QtNDFjZC1hZjYxLWM4MjFjZjdhZjA0M4SnY2VsbF9pZNkkOTk3OWEyMzUtMWVjZC00MWNkLWFmNjEtYzgyMWNmN2FmMDQzpGNvZGXaAiBtZCIiIgpXZSBjYW4gZ2VuZXJhdGUgYSBzaGFyZWQgbGlicmFyeSBmcm9tIHRoZSBhYm92ZSBHbyBjb2RlIHdpdGggdGhlIGZvbGxvd2luZyBjb21tYW5kOgoKYGBgc2gKJCBnbyBidWlsZCAtbyBsaWJjYWxjcGkuZHlsaWIgLWJ1aWxkbW9kZT1jLXNoYXJlZCBjYWxjcGkuZ28KYGBgCgpTaW5jZSBJIHVzZSBtYWNPUyBpbiBteSBkYWlseSBsaWZlLCB0aGUgZXh0ZW5zaW9uIG9mIGEgc2hhcmVkIGxpYnJhcnkgaXMgYC5keWxpYmAuCklmIHlvdSBhcmUgdXNpbmcgTGludXgsIHRoYXQgc2hvdWxkIGJlIGAuc29gLgoKSnVsaWEgaGFzIHRoZSBgQGNjYWxsYCBtYWNybyB3aGljaCBsb2FkcyB0aGUgZ2VuZXJhdGVkIHNoYXJlZCBsaWJyYXJ5IGFuZCBjYWxscyBmdW5jdGlvbnMgd2l0aGluIGl0LiBTZWUgdGhlIG9mZmljaWFsIEp1bGlhIFtkb2N1bWVudGF0aW9uXShodHRwczovL2RvY3MuanVsaWFsYW5nLm9yZy9lbi92MS9tYW51YWwvY2FsbGluZy1jLWFuZC1mb3J0cmFuLWNvZGUvKSB0byBsZWFybiBtb3JlIGFib3V0IHRoZSBgQGNjYWxsYCBtYWNyby4KIiIiqG1ldGFkYXRhg6lzaG93X2xvZ3PDqGRpc2FibGVkwq5za2lwX2FzX3NjcmlwdMKrY29kZV9mb2xkZWTD2SQwOTRjZTRiNy1jMTAwLTQyMzYtYTUzZS1iZjRjYzIwYjNjYzaEp2NlbGxfaWTZJDA5NGNlNGI3LWMxMDAtNDIzNi1hNTNlLWJmNGNjMjBiM2NjNqRjb2Rl2SROID0gNTAwMCAjIFlvdSBjYW4gY2hhbmdlIHRoZSB2YWx1ZS6obWV0YWRhdGGDqXNob3dfbG9nc8OoZGlzYWJsZWTCrnNraXBfYXNfc2NyaXB0wqtjb2RlX2ZvbGRlZMKrbm90ZWJvb2tfaWTZJGJmNmY0ZDE2LWY2NTgtMTFlZi0xNmQ2LTQ5ZWY0NGZkNzIxYatpbl90ZW1wX2RpcsKobWV0YWRhdGGA"; | |
window.pluto_preamble_html = undefined; | |
</script> | |
<meta name="pluto-insertion-spot-parameters"> | |
<script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/editor.0f03e089.js" type="module" defer></script><script src="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/index.11569726.js"></script><link rel="pluto-external-source" id="MathJax-script" href="https://cdn.jsdelivr.net/gh/fonsp/[email protected]/frontend-dist/tex-svg-full.f72d1ae1.js" type="text/javascript"> | |
<meta name="pluto-insertion-spot-preload"> | |
</head><body class="loading no-MαθJax"> <div style="min-height:100vh;display:flex"> <pluto-editor class="fullscreen"> <progress style="filter:grayscale()" class="delete-me-when-live statefile-fetch-progress" max="100"></progress> </pluto-editor> </div> </body></html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment