storytold/deckcraft
Presentations and slide shows: an open-source, clean-room reimplementation of Microsoft PowerPoint in pure Rust. Part of the ArtCraft Crafting Apps.
About storytold/deckcraft
storytold/deckcraft is an open-source project on GitHub, mainly written in Rust. Presentations and slide shows: an open-source, clean-room reimplementation of Microsoft PowerPoint in pure Rust. Part of the ArtCraft Crafting Apps. It currently holds 3,808 stars and 2,153 forks with 410 open issues, and was last pushed on 2026-10-18 (repository created 2026-10-07).
Project Overview
Git Homed tracks it on the Featured Project board.
GitHub Repository Details
README
{"name":"README.md","path":"README.md","sha":"eeaf1cf63b18b44d2ebaaea2c77204ae2ed53d41","size":17403,"url":"https://api.github.com/repos/storytold/deckcraft/contents/README.md?ref=main","html_url":"https://github.com/storytold/deckcraft/blob/main/README.md","git_url":"https://api.github.com/repos/storytold/deckcraft/git/blobs/eeaf1cf63b18b44d2ebaaea2c77204ae2ed53d41","download_url":"https://raw.githubusercontent.com/storytold/deckcraft/main/README.md","type":"file","content":"PHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9nZXRhcnRj\ncmFmdC5jb20vIj4KICAgIDxwaWN0dXJlPgogICAgICA8c291cmNlIG1lZGlh\nPSIocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIiBzcmNzZXQ9ImRvY3Mv\nYnJhbmQvYXJ0Y3JhZnQtbG9nby13aGl0ZS5zdmciPgogICAgICA8aW1nIGFs\ndD0iQXJ0Q3JhZnQiIHNyYz0iZG9jcy9icmFuZC9hcnRjcmFmdC1sb2dvLnN2\nZyIgd2lkdGg9IjIwMCI+CiAgICA8L3BpY3R1cmU+CiAgPC9hPgo8L3A+Cgo8\naDEgYWxpZ249ImNlbnRlciI+RGVja0NyYWZ0PC9oMT4KCjxwIGFsaWduPSJj\nZW50ZXIiPgogIDxiPlByZXNlbnRhdGlvbnMgYW5kIHNsaWRlIHNob3dzOyBh\nbiBvcGVuLXNvdXJjZSwgbW9kZXJuIHByZXNlbnRhdGlvbiBhbmQgc2xpZGUg\nZGVzaWduZXIsIGJ1aWx0IGluIHB1cmUgUnVzdC48L2I+CjwvcD4KCjxwIGFs\naWduPSJjZW50ZXIiPgogIEJ1aWxkIGRlY2tzIHdpdGggdGhlbWVzLCBsYXlv\ndXRzLCBzaGFwZXMsIHBpY3R1cmVzLCB0YWJsZXMsIGNoYXJ0cywgdHJhbnNp\ndGlvbnMgYW5kIGFuaW1hdGlvbnMsCiAgb3BlbiBhbmQgc2F2ZSAucHB0eCBw\ncmVzZW50YXRpb24gZmlsZXMsIGFuZCBwcmVzZW50IHRoZW0gZnVsbCBzY3Jl\nZW4uIE5hdGl2ZSBvbiBtYWNPUywgV2luZG93cywgTGludXgKICBhbmQgRnJl\nZUJTRCwgYW5kIGluIHRoZSBicm93c2VyLiBFdmVyeSBidXR0b24gaXMgYWxz\nbyBhIGNvbW1hbmQgdGhhdCB0aGUgQ0xJIGFuZCBBSSBhZ2VudHMKICAodGhy\nb3VnaCBNQ1ApIGNhbiBkcml2ZS4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+\nCiAgPGltZyBhbHQ9IlN0YXR1czogZWFybHkgZGV2ZWxvcG1lbnQiIHNyYz0i\naHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9zdGF0dXMtZWFybHklMjBk\nZXZlbG9wbWVudC1mMjZiMWQ/c3R5bGU9ZmxhdC1zcXVhcmUiPgogIDxpbWcg\nYWx0PSJMaWNlbnNlOiBNSVQgT1IgQXBhY2hlLTIuMCIgc3JjPSJodHRwczov\nL2ltZy5zaGllbGRzLmlvL2JhZGdlL2xpY2Vuc2UtTUlUJTIwT1IlMjBBcGFj\naGUtLTIuMC1ibHVlP3N0eWxlPWZsYXQtc3F1YXJlIj4KICA8aW1nIGFsdD0i\nV3JpdHRlbiBpbiBSdXN0IiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8v\nYmFkZ2Uvd3JpdHRlbiUyMGluLVJ1c3QtYjc0MTBlP3N0eWxlPWZsYXQtc3F1\nYXJlIj4KICA8aW1nIGFsdD0iUGxhdGZvcm1zIiBzcmM9Imh0dHBzOi8vaW1n\nLnNoaWVsZHMuaW8vYmFkZ2UvcGxhdGZvcm1zLW1hY09TJTIwJUMyJUI3JTIw\nV2luZG93cyUyMCVDMiVCNyUyMExpbnV4JTIwJUMyJUI3JTIwQlNEJTIwJUMy\nJUI3JTIwV2ViLTU1NT9zdHlsZT1mbGF0LXNxdWFyZSI+CjwvcD4KCjxwIGFs\naWduPSJjZW50ZXIiPgogIDxhIGhyZWY9Imh0dHBzOi8vZGlzY29yZC5nZy9h\ncnRjcmFmdCI+PGltZyBhbHQ9IkpvaW4gdGhlIEFydENyYWZ0IGNvbW11bml0\neSBvbiBEaXNjb3JkIiBzcmM9Imh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vYmFk\nZ2UvSm9pbiUyMHVzJTIwb24lMjBEaXNjb3JkLTU4NjVGMj9zdHlsZT1mb3It\ndGhlLWJhZGdlJmxvZ289ZGlzY29yZCZsb2dvQ29sb3I9d2hpdGUiIGhlaWdo\ndD0iNDAiPjwvYT4KPC9wPgoKPHAgYWxpZ249ImNlbnRlciI+CiAgPGEgaHJl\nZj0iaHR0cHM6Ly9nZXRhcnRjcmFmdC5jb20vYXBwcy9kZWNrY3JhZnQiPjxi\nPkRlY2tDcmFmdCBvbiBnZXRhcnRjcmFmdC5jb208L2I+PC9hPiDCtwogIDxh\nIGhyZWY9Imh0dHBzOi8vZ2V0YXJ0Y3JhZnQuY29tLyI+QXJ0Q3JhZnQ8L2E+\nIMK3CiAgPGEgaHJlZj0iaHR0cHM6Ly9nZXRhcnRjcmFmdC5jb20vYXBwcyI+\nQWxsIENyYWZ0aW5nIEFwcHM8L2E+CjwvcD4KCj4gWyFOT1RFXQo+ICoqQXJ0\nQ3JhZnQgaXMgYSBjb21tdW5pdHkgb2YgYXJ0aXN0cyBmcm9tIGFsbCB3YWxr\ncyBvZiBsaWZlLioqIFBhaW50ZXJzLCBwaG90b2dyYXBoZXJzLAo+IGZpbG1t\nYWtlcnMsIGlsbHVzdHJhdG9ycywgZGVzaWduZXJzLCBhbmltYXRvcnMsIGhv\nYmJ5aXN0cywgYW5kIHBlb3BsZSB3aG8gcGlja2VkIHVwIGEgcGVuY2lsCj4g\nbGFzdCB3ZWVrLiBJZiB5b3UgbWFrZSB0aGluZ3MsIHlvdSdyZSBvbmUgb2Yg\ndXMuICoqW0NvbWUgc2F5IGhpIG9uIERpc2NvcmRdKGh0dHBzOi8vZGlzY29y\nZC5nZy9hcnRjcmFmdCkuKioKCjxwIGFsaWduPSJjZW50ZXIiPgogIDxpbWcg\nYWx0PSJEZWNrQ3JhZnQgZWRpdGluZyBhIHNsaWRlOiByaWJib24sIHNsaWRl\nIHRodW1ibmFpbHMgd2l0aCBzZWN0aW9ucywgYSBwcm9jZXNzIGRpYWdyYW0g\nb24gdGhlIGNhbnZhcywgbm90ZXMgYW5kIHN0YXR1cyBiYXIiIHNyYz0iZG9j\ncy9pbWFnZXMvZWRpdG9yLnBuZyIgd2lkdGg9IjkwMCI+CjwvcD4KCjxwIGFs\naWduPSJjZW50ZXIiPgogIDxhIGhyZWY9IiN3aGF0LXdvcmtzLXRvZGF5Ij5X\naGF0IHdvcmtzPC9hPiDCtwogIDxhIGhyZWY9IiNnZXR0aW5nLXN0YXJ0ZWQi\nPkdldHRpbmcgc3RhcnRlZDwvYT4gwrcKICA8YSBocmVmPSIjYWdlbnRzLWNs\naS1hbmQtbWNwIj5BZ2VudHMsIENMSSBhbmQgTUNQPC9hPiDCtwogIDxhIGhy\nZWY9IiNyb2FkbWFwIj5Sb2FkbWFwPC9hPiDCtwogIDxhIGhyZWY9IiNkb3du\nbG9hZHMiPkRvd25sb2FkczwvYT4gwrcKICA8YSBocmVmPSIjdGhlLWNyYWZ0\naW5nLWFwcHMiPlRoZSBDcmFmdGluZyBBcHBzPC9hPiDCtwogIDxhIGhyZWY9\nIiNsaWNlbnNlLWFuZC1jcmVkaXRzIj5MaWNlbnNlPC9hPgo8L3A+CgojIyBX\naGF0IHdvcmtzIHRvZGF5CgpEZWNrQ3JhZnQgaXMgaW4gYWxwaGEsIGhlYWRp\nbmcgZm9yIGJldGEgKHNlZSB0aGUgW3JvYWRtYXBdKFJPQURNQVAubWQpKS4K\nVG9kYXkgaXQgY2FuOgoKLSAqKk1ha2UgZGVja3MqKjogc2xpZGUgbWFzdGVy\ncyBhbmQgZWxldmVuIGxheW91dHMgd2l0aCBwbGFjZWhvbGRlcnMgdGhhdCBp\nbmhlcml0IHBvc2l0aW9uIGFuZAogIGZvcm1hdHRpbmcsIGVpZ2h0IG9yaWdp\nbmFsIHRoZW1lcyB3aXRoIGNvbG91ciBhbmQgZm9udCBzY2hlbWVzLCBzZWN0\naW9ucywgbm90ZXMsIGNvbW1lbnRzLAogIGhlYWRlcnMgYW5kIGZvb3RlcnMs\nIGN1c3RvbSBzbGlkZSBzaXplcy4KLSAqKkRyYXcqKjogMTUwKyBwcmVzZXQg\nc2hhcGVzIHdpdGggYWRqdXN0IGhhbmRsZXMsIGNvbm5lY3RvcnMgdGhhdCBz\ndGF5IGdsdWVkIHRvIHNoYXBlcywgZnJlZWZvcm0sCiAgY3VydmUgYW5kIHNj\ncmliYmxlIHRvb2xzLCBtZXJnZSBzaGFwZXMgKHVuaW9uLCBjb21iaW5lLCBm\ncmFnbWVudCwgaW50ZXJzZWN0LCBzdWJ0cmFjdCksIGdyYWRpZW50LAogIHBp\nY3R1cmUgYW5kIHBhdHRlcm4gZmlsbHMsIG91dGxpbmVzIHdpdGggZGFzaGVz\nIGFuZCBhcnJvd2hlYWRzLCBzaGFkb3dzLCBnbG93LCBzb2Z0IGVkZ2VzIGFu\nZAogIHJlZmxlY3Rpb25zLgotICoqV3JpdGUqKjogaW4tcGxhY2UgdGV4dCBl\nZGl0aW5nIHdpdGggZnVsbCBmb250IGFuZCBwYXJhZ3JhcGggZm9ybWF0dGlu\nZywgYnVsbGV0cyBhbmQgbnVtYmVyaW5nLAogIGNvbHVtbnMsIGF1dG9maXQs\nIHZlcnRpY2FsIHRleHQsIGZpZWxkcyBhbmQgaHlwZXJsaW5rcy4KLSAqKkFk\nZCBjb250ZW50Kio6IHBpY3R1cmVzIHdpdGggY3JvcCBhbmQgY29ycmVjdGlv\nbnMsIHRhYmxlcyB3aXRoIHN0eWxlcywgY2hhcnRzLCBTbWFydEFydCBiYXNp\nY3MsCiAgYXVkaW8gYW5kIHZpZGVvIChNUDMsIEFBQywgRkxBQywgQUxBQywg\nT2dnLCBPcHVzLCBXQVYsIEFJRkY7IEguMjY0LCBIRVZDLCBWUDksIEFWMSku\nCi0gKipQcmVzZW50Kio6IHRyYW5zaXRpb25zIChpbmNsdWRpbmcgTW9ycGgp\nLCBlbnRyYW5jZS9lbXBoYXNpcy9leGl0IGFuZCBtb3Rpb24tcGF0aCBhbmlt\nYXRpb25zLAogIGJ5LXBhcmFncmFwaCBidWlsZHMsIGZ1bGwtc2NyZWVuIHNs\naWRlIHNob3csIHByZXNlbnRlciB2aWV3LCBwZW4sIHJlaGVhcnNlIHRpbWlu\nZ3MsIG1lZGlhIHBsYXliYWNrLgotICoqRXhjaGFuZ2UgZmlsZXMqKjogb3Bl\nbiBhbmQgc2F2ZSAucHB0eCBwcmVzZW50YXRpb25zLCBleHBvcnQgUERGIChz\nbGlkZXMsIG5vdGVzIHBhZ2VzLCBoYW5kb3V0cwogIHdpdGggc2VsZWN0YWJs\nZSB0ZXh0KSwgUE5HL0pQRUcsIGFuIGFuaW1hdGVkIEdJRiBvZiB0aGUgZGVj\nayBhbmQgb3V0bGluZXMuIFVuc2F2ZWQgd29yayBpcyBrZXB0IGJ5IEF1dG9S\nZWNvdmVyLgotICoqQXV0b21hdGUqKjogMjAwKyBjb21tYW5kcyB3aXRoIHVu\nZG8sIGFsbCBzY3JpcHRhYmxlIGZyb20gdGhlIENMSSwgYSBKU09OIGNvbnRy\nb2wgY2hhbm5lbCBhbmQgYW4KICBNQ1Agc2VydmVyIGZvciBBSSBhZ2VudHMu\nCgo8dGFibGU+CiAgPHRyPgogICAgPHRkIHdpZHRoPSI1MCUiPjxpbWcgYWx0\nPSJBIHNlbGVjdGVkIHNoYXBlIHdpdGggdGhlIFNoYXBlIEZvcm1hdCB0YWIi\nIHNyYz0iZG9jcy9pbWFnZXMvc2hhcGUtZm9ybWF0LnBuZyI+PGJyPjxzdWI+\nU2hhcGUgRm9ybWF0IGNvbnRleHR1YWwgdGFiIGFuZCBzZWxlY3Rpb24gaGFu\nZGxlczwvc3ViPjwvdGQ+CiAgICA8dGQgd2lkdGg9IjUwJSI+PGltZyBhbHQ9\nIlRoZSBGb3JtYXQgU2hhcGUgcGFuZSBlZGl0aW5nIGEgZ3JhZGllbnQgZmls\nbCIgc3JjPSJkb2NzL2ltYWdlcy9mb3JtYXQtcGFuZS5wbmciPjxicj48c3Vi\nPkZvcm1hdCBTaGFwZSBwYW5lOiBncmFkaWVudCB0eXBlLCBkaXJlY3Rpb24g\nYW5kIHN0b3BzPC9zdWI+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZCB3\naWR0aD0iNTAlIj48aW1nIGFsdD0iU2xpZGUgU29ydGVyIHZpZXcgd2l0aCB0\ncmFuc2l0aW9ucyB1bmRlciBlYWNoIHNsaWRlIiBzcmM9ImRvY3MvaW1hZ2Vz\nL3NsaWRlLXNvcnRlci5wbmciPjxicj48c3ViPlNsaWRlIFNvcnRlciB3aXRo\nIGVhY2ggc2xpZGUncyB0cmFuc2l0aW9uPC9zdWI+PC90ZD4KICAgIDx0ZCB3\naWR0aD0iNTAlIj48aW1nIGFsdD0iRGVja0NyYWZ0IGluIGRhcmsgbW9kZSBz\naG93aW5nIGEgY2hhcnQgc2xpZGUiIHNyYz0iZG9jcy9pbWFnZXMvZGFyay1t\nb2RlLnBuZyI+PGJyPjxzdWI+RGFyayBtb2RlLCB3aXRoIGEgbmF0aXZlIGNo\nYXJ0PC9zdWI+PC90ZD4KICA8L3RyPgo8L3RhYmxlPgoKPHAgYWxpZ249ImNl\nbnRlciI+CiAgPGltZyBhbHQ9IkFsbCBlaWdodCBzbGlkZXMgb2YgdGhlIE5v\ncnRoZXJuIExpZ2h0cyBzYW1wbGUgZGVjayIgc3JjPSJkb2NzL2ltYWdlcy9z\nYW1wbGUtZGVjay5wbmciIHdpZHRoPSI5MDAiPjxicj4KICA8c3ViPlRoZSBi\ndWlsdC1pbiBzYW1wbGUgZGVjaywgcmVuZGVyZWQgYnkgPGNvZGU+ZGVja2Ny\nYWZ0LWNsaSByZW5kZXIgLS1zYW1wbGUgLS1hbGw8L2NvZGU+PC9zdWI+Cjwv\ncD4KCiMjIEdldHRpbmcgc3RhcnRlZAoKUERGIGV4cG9ydCB1c2VzIHRoZSBz\naGFyZWQgYGNyYWZ0LXBkZmAgd3JpdGVyIHdpdGggaW1wb3J0IGZlYXR1cmVz\nIGRpc2FibGVkLiBTZWUKW2BjcmF0ZXMvcGRmL1JFQURNRS5tZGBdKGNyYXRl\ncy9wZGYvUkVBRE1FLm1kKSBmb3IgdGhlIGRlcGVuZGVuY3kgYW5kIHZhbGlk\nYXRpb24gcmVxdWlyZW1lbnRzLgoKYGBgc2gKZ2l0IGNsb25lIGh0dHBzOi8v\nZ2l0aHViLmNvbS9zdG9yeXRvbGQvZGVja2NyYWZ0CmNkIGRlY2tjcmFmdApj\nYXJnbyBydW4gLS1yZWxlYXNlIC1wIGRlY2tjcmFmdC1jbGkgLS0gcmVuZGVy\nIC0tc2FtcGxlIC0tYWxsIC0tc2NhbGUgMSBvdXQvCmBgYAoKT24gTGludXgs\nIHRoZSBidWlsZCBhbHNvIG5lZWRzIHRoZSBBTFNBIGhlYWRlcnMgZm9yIHNs\naWRlLXNob3cgc291bmQ6IGBhbHNhLWxpYi1kZXZlbGAgb24gRmVkb3JhLApg\nbGliYXNvdW5kMi1kZXZgIG9uIERlYmlhbiBhbmQgVWJ1bnR1LCBgYWxzYS1s\naWJgIG9uIEFyY2guIFdpdGhvdXQgdGhlbSBpdCBzdG9wcyBhdCBgYWxzYS1z\neXNgLgoKRm9udHMgY29tZSBmcm9tIFtjcmFmdC1mb250c10oaHR0cHM6Ly9n\naXRodWIuY29tL3N0b3J5dG9sZC9jcmFmdC1mb250cyk6IGNsb25lIGl0IG5l\neHQgdG8gdGhpcyByZXBvCihgLi4vY3JhZnQtZm9udHNgKSBhbmQgbG9jYWwg\nYnVpbGRzIHBpY2sgaXQgdXAgYXV0b21hdGljYWxseTsgd2l0aG91dCBpdCBE\nZWNrQ3JhZnQgdXNlcyB5b3VyIHN5c3RlbQpmb250cy4KCkVhY2ggW0dpdEh1\nYiByZWxlYXNlXShodHRwczovL2dpdGh1Yi5jb20vc3Rvcnl0b2xkL2RlY2tj\ncmFmdC9yZWxlYXNlcykgaGFzIHJlYWR5LW1hZGUgYnVpbGRzLCBvbiBMaW51\neCBhcwphbiBBcHBJbWFnZSwgYSBgLmRlYmAsIGFuIGAucnBtYCBhbmQgYSB0\nYXJiYWxsLiBPbiBHZW50b28sIHRoZSBjb21tdW5pdHkgWzo6c25ha2VieXRl\nCm92ZXJsYXldKGh0dHBzOi8vZ2l0aHViLmNvbS9zd2l0Y2g4Ny9zbmFrZWJ5\ndGUtb3ZlcmxheSkgcGFja2FnZXMgdGhlIExpbnV4IHJlbGVhc2UgYXMKYGFw\ncC1vZmZpY2UvZGVja2NyYWZ0LWJpbmAgKG5vdCBtYWludGFpbmVkIGJ5IHRo\nZSBEZWNrQ3JhZnQgdGVhbSk6CgpgYGBzaAplc2VsZWN0IHJlcG9zaXRvcnkg\nYWRkIHNuYWtlYnl0ZSBnaXQgaHR0cHM6Ly9naXRodWIuY29tL3N3aXRjaDg3\nL3NuYWtlYnl0ZS1vdmVybGF5LmdpdAplbWFpbnQgc3luYyAtciBzbmFrZWJ5\ndGUKZWNobyAnYXBwLW9mZmljZS9kZWNrY3JhZnQtYmluIH5hbWQ2NCcgPj4g\nL2V0Yy9wb3J0YWdlL3BhY2thZ2UuYWNjZXB0X2tleXdvcmRzL2RlY2tjcmFm\ndAplbWVyZ2UgLS1hc2sgYXBwLW9mZmljZS9kZWNrY3JhZnQtYmluCmBgYAoK\nIyMjIExvZ3MKClRoZSBkZXNrdG9wIGFwcCB3cml0ZXMgaXRzIGBsb2dgIHJl\nY29yZHMgdG8gc3RhbmRhcmQgZXJyb3IgYW5kIHRvIGBsb2dzL2RlY2tjcmFm\ndC5sb2dgIGluIHRoZQpzZXR0aW5ncyBkaXJlY3RvcnksIGJlc2lkZSBgdWku\nanNvbmAgYW5kIGBwcmVmcy5qc29uYCAoTGludXggYH4vLmNvbmZpZy9kZWNr\nY3JhZnQvbG9ncy9gLCBvcgpgJFhER19DT05GSUdfSE9NRS9kZWNrY3JhZnQv\nbG9ncy9gOyBtYWNPUyBgfi9MaWJyYXJ5L0FwcGxpY2F0aW9uIFN1cHBvcnQv\nRGVja0NyYWZ0L2xvZ3MvYDsgV2luZG93cwpgJUFQUERBVEElXERlY2tDcmFm\ndFxsb2dzXGApLiBBIHN0YXJ0IGZyb20gYSBkZXNrdG9wIG1lbnUgb3IgdGhl\nIERvY2sgaGFzIG5vIHRlcm1pbmFsLCBzbyB0aGlzIGZpbGUKaXMgd2hhdCB0\nbyBhdHRhY2ggdG8gYSBidWcgcmVwb3J0OiB0aGUgY3Jhc2ggZ3VhcmQncyBw\nYW5pYyByZXBvcnQsIGEgZmFpbGVkIGNyYXNoLXJlY292ZXJ5IHNhdmUsClBh\ncnRzIHNraXBwZWQgb24gaW1wb3J0IGFuZCBhdWRpbyBvdXRwdXQgcHJvYmxl\nbXMgbGFuZCB0aGVyZS4gRWFjaCBsYXVuY2ggbW92ZXMgdGhlCnByZXZpb3Vz\nIGxvZyB0byBgZGVja2NyYWZ0LjEubG9nYCAoYW5kIHRoYXQgb25lIHRvIGBk\nZWNrY3JhZnQuMi5sb2dgKSwgc28gdGhlIGxvZyBvZiBhIHJ1biB0aGF0CmNy\nYXNoZWQgc3Vydml2ZXMgdGhlIG5leHQgc3RhcnQuIFRoZSBmaWxlIHN0b3Bz\nIGdyb3dpbmcgYXQgMTYgTWlCLiBgLS12ZXJzaW9uYCB3cml0ZXMgbm8gZmls\nZS4KCnwgVmFyaWFibGUgfCBFZmZlY3QgfAp8LS0tfC0tLXwKfCBgUlVTVF9M\nT0dgIHwgTG9nIGxldmVscyBmb3Igc3RhbmRhcmQgZXJyb3IgYW5kIHRoZSBs\nb2cgZmlsZS4gRGVmYXVsdDogYGluZm9gIGZvciBEZWNrQ3JhZnQncyBvd24g\nY3JhdGVzLCBgd2FybmAgZm9yIGV2ZXJ5dGhpbmcgZWxzZS4gZW52X2xvZ2dl\nci1zdHlsZSBkaXJlY3RpdmVzIHJlcGxhY2UgdGhhdCwgZS5nLiBgUlVTVF9M\nT0c9ZGVidWdgLCBgUlVTVF9MT0c9d2FybixkZWNrY3JhZnRfcHB0eD10cmFj\nZWAgb3IgYFJVU1RfTE9HPWluZm8sd2dwdV9jb3JlPXdhcm5gOyBhIGRpcmVj\ndGl2ZSBlbmRpbmcgaW4gYCpgIGNvdmVycyBldmVyeSB0YXJnZXQgc3RhcnRp\nbmcgd2l0aCBpdCAoYGRlY2tjcmFmdCo9ZGVidWdgKS4gfAoKVGhlIGxvZ2dl\nciBpcyBgYXBwcy9kZWNrY3JhZnQvc3JjL2xvZ2dpbmcucnNgOyB0aGUgcmVh\nbHRpbWUgYXVkaW8gY2FsbGJhY2sgZG9lcyBub3QgbG9nLiBUaGUgd2ViCmFw\ncCBsb2dzIHRvIHRoZSBicm93c2VyIGNvbnNvbGUgaW5zdGVhZC4KCiMjIEFn\nZW50cywgQ0xJIGFuZCBNQ1AKCkV2ZXJ5IGFjdGlvbiBpbiBEZWNrQ3JhZnQg\naXMgYSBjb21tYW5kIHdpdGggYSBzdGFibGUgaWQsIHNvIHBlb3BsZSwgc2Ny\naXB0cyBhbmQgQUkgYWdlbnRzIHVzZSB0aGUKc2FtZSB2ZXJiczoKCmBgYHNo\nCmRlY2tjcmFmdC1jbGkgY29tbWFuZHMgZm9ybWF0LiAgICAgICAgICAjIGxp\nc3QgY29tbWFuZHMKZGVja2NyYWZ0LWNsaSBydW4gLS1zYW1wbGUgLS1jbWQg\nJ3NsaWRlLm5ldz17ImxheW91dCI6InRpdGxlT25seSIsInRpdGxlIjoiSGVs\nbG8ifScgLS1zYXZlIGhlbGxvLmRlY2tjcmFmdApkZWNrY3JhZnQtY2xpIG1j\ncCAgICAgICAgICAgICAgICAgICAgICAgIyBNQ1Agc2VydmVyIG92ZXIgc3Rk\naW8gKGhlYWRsZXNzKQpkZWNrY3JhZnQtY2xpIG1jcCAtLWNvbm5lY3QgNzk5\nMCAgICAgICAgIyBkcml2ZSB0aGUgcnVubmluZyBhcHAgKGRlY2tjcmFmdCAt\nLWNvbnRyb2wgNzk5MCkKZGVja2NyYWZ0LWNsaSBtY3AgLS1hdXRvbWF0aW9u\nLXJlYWQtcm9vdCBESVIgLS1hdXRvbWF0aW9uLXdyaXRlLXJvb3QgRElSICAg\nIyBjb25maW5lIHRoZSBoZWFkbGVzcyBhZ2VudCB0byBmb2xkZXJzCmBgYAoK\nIyMgUm9hZG1hcAoKRGVja0NyYWZ0IGlzIGluICoqYWxwaGEqKi4gSXQgY292\nZXJzICoqODQlIG9mIHRoZSBmZWF0dXJlcyB0cmFja2VkIGluIFtgZG9jcy90\nYXJnZXQtYXBwLXBhcml0eS5tZGBdKGRvY3MvdGFyZ2V0LWFwcC1wYXJpdHku\nbWQpIGJ5IGJyZWFkdGgqKiAoOTIlIG9mIHRoZSBjb3JlCm9uZXMsIG1lYXN1\ncmVkKSBhbmQgaXMgYWJvdXQgKio1NSUgcmVhZHkgZm9yIHJlYWwgd29yayBh\nY3Jvc3MgYWxsIHRyYWNrZWQgY2FwYWJpbGl0aWVzKiogKGVzdGltYXRlZCku\nClNlZSBbUk9BRE1BUC5tZF0oUk9BRE1BUC5tZCkgZm9yIHRoZSBzdGFnZSwg\nbnVtYmVycyBieSBkaW1lbnNpb24gYW5kIHdoYXQncyBuZXh0LApbZG9jcy90\nYXJnZXQtYXBwLXBhcml0eS5tZF0oZG9jcy90YXJnZXQtYXBwLXBhcml0eS5t\nZCkgZm9yIHRoZSBmdWxsIGFzc2Vzc21lbnQsCltkb2NzL2dhcHMubWRdKGRv\nY3MvZ2Fwcy5tZCkgZm9yIGV2ZXJ5IGtub3duIHNob3J0ZmFsbCBhbmQKW2Rv\nY3MvcGFyaXR5LWNoZWNrbGlzdC5tZF0oZG9jcy9wYXJpdHktY2hlY2tsaXN0\nLm1kKSBmb3IgdGhlIGZlYXR1cmUtYnktZmVhdHVyZSBjaGVja2xpc3QuCgoj\nIyBEb3dubG9hZHMKCioqRG93bmxvYWQgRGVja0NyYWZ0KiogZnJvbSBHaXRI\ndWI6IHRoZSBbbGF0ZXN0IHJlbGVhc2VdKGh0dHBzOi8vZ2l0aHViLmNvbS9z\ndG9yeXRvbGQvZGVja2NyYWZ0L3JlbGVhc2VzL2xhdGVzdCkgaGFzIGV2ZXJ5\nIGJ1aWxkIGxpc3RlZCBiZWxvdywgYW5kIFthbGwgcmVsZWFzZXNdKGh0dHBz\nOi8vZ2l0aHViLmNvbS9zdG9yeXRvbGQvZGVja2NyYWZ0L3JlbGVhc2VzKSBo\nYXMgZWFybGllciB2ZXJzaW9ucyBhbmQgdGhlaXIgbm90ZXMuIGA8dmVyPmAg\naW4gdGhlIGZpbGUgbmFtZXMgaXMgdGhlIHZlcnNpb24gbnVtYmVyLCBhbmQg\nYFNIQTI1NlNVTVMudHh0YCBsaXN0cyBhIGNoZWNrc3VtIGZvciBldmVyeSBm\naWxlLgoKIyMjIFdpbmRvd3MKCnwgQnVpbGQgfCBJbnN0YWxsZXIgfCBQb3J0\nYWJsZSB8CnwtLS18LS0tfC0tLXwKfCB4NjQgKDY0LWJpdCBJbnRlbC9BTUQp\nIHwgYGRlY2tjcmFmdC08dmVyPi13aW5kb3dzLXg2NC5tc2lgIHwgYGRlY2tj\ncmFmdC08dmVyPi13aW5kb3dzLXg2NC1wb3J0YWJsZS56aXBgIHwKfCBhcm02\nNCAoU25hcGRyYWdvbiBhbmQgb3RoZXIgQVJNIFBDcykgfCBgZGVja2NyYWZ0\nLTx2ZXI+LXdpbmRvd3MtYXJtNjQubXNpYCB8IGBkZWNrY3JhZnQtPHZlcj4t\nd2luZG93cy1hcm02NC1wb3J0YWJsZS56aXBgIHwKfCB4ODYgKDMyLWJpdCkg\nfCBgZGVja2NyYWZ0LTx2ZXI+LXdpbmRvd3MteDg2Lm1zaWAgfCBgZGVja2Ny\nYWZ0LTx2ZXI+LXdpbmRvd3MteDg2LXBvcnRhYmxlLnppcGAgfAoKSW5zdGFs\nbGVycyBhbmQgZXhlY3V0YWJsZXMgYXJlIGNvZGUtc2lnbmVkLgoKKipJZiB0\naGUgYXBwIGRvZXNuJ3Qgb3BlbiBvbiBXaW5kb3dzOioqIHRoZSBkZXNrdG9w\nIGFwcCBpbml0aWFsaXplcyBvbmx5IERpcmVjdFggMTIgYnkgZGVmYXVsdC4K\nTGV0dGluZyB3Z3B1IGFsc28gY3JlYXRlIGFuIE9wZW5HTCBpbnN0YW5jZSBj\nYW4gY3Jhc2ggc29tZSBncmFwaGljcyBkcml2ZXJzIChBTUQncwpgYXRpbzZh\neHguZGxsYCkgYmVmb3JlIHRoZSB3aW5kb3cgYXBwZWFycywgc28gdGhlIGFw\ncCB3b3VsZCBmbGFzaCBpbiBUYXNrIE1hbmFnZXIgYW5kIHF1aXQuCmBXR1BV\nX0JBQ0tFTkRgIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBmb3IgdHJvdWJsZXNo\nb290aW5nIChmb3IgZXhhbXBsZSBgZHgxMmAgb3IgYHZ1bGthbmApLiBJbgpQ\nb3dlclNoZWxsLCBmcm9tIHRoZSBmb2xkZXIgY29udGFpbmluZyB0aGUgZXhl\nY3V0YWJsZToKCmBgYHBvd2Vyc2hlbGwKJGVudjpXR1BVX0JBQ0tFTkQgPSAi\ndnVsa2FuIgomIC5cZGVja2NyYWZ0LmV4ZQpSZW1vdmUtSXRlbSBFbnY6V0dQ\nVV9CQUNLRU5EICAgICAgICAgICAgICAgICAgICAgIyByZXN0b3JlIHRoZSBk\nZWZhdWx0IGZvciBsYXRlciBsYXVuY2hlcwpgYGAKCkFuIGV4cGxpY2l0IGBn\nbGAgb3ZlcnJpZGUgY2FuIGJyaW5nIHRoZSBkcml2ZXIgY3Jhc2ggYmFjayBv\nbiBhZmZlY3RlZCBzeXN0ZW1zLiBUaGUgbWFjT1MsIExpbnV4CmFuZCB3ZWIg\nYmFja2VuZCBkZWZhdWx0cyBhcmUgdW5jaGFuZ2VkLgoKRGlyZWN0WCAxMiBz\naGFkZXJzIGFyZSBjb21waWxlZCB3aXRoIEZYQywgd2hpY2ggaXMgcGFydCBv\nZiBXaW5kb3dzLCBzbyBubyBgZHhjb21waWxlci5kbGxgIG9yCmBkeGlsLmRs\nbGAgaXMgbmVlZGVkICgiUGFyZW50IGRldmljZSBpcyBsb3N0IiBhdCBzdGFy\ndCwgIzE1MykuIGAkZW52OldHUFVfRFgxMl9DT01QSUxFUiA9ICJkeGMiYAoo\nb3IgYCJhdXRvImApIHNlbGVjdHMgd2dwdSdzIERYQyBoYW5kbGluZyBhZ2Fp\nbiBmb3IgdHJvdWJsZXNob290aW5nLgoKIyMjIG1hY09TCgp8IEJ1aWxkIHwg\nRmlsZSB8IE5vdGVzIHwKfC0tLXwtLS18LS0tfAp8IEFwcCwgdW5pdmVyc2Fs\nIChBcHBsZSBzaWxpY29uICsgSW50ZWwpIHwgYGRlY2tjcmFmdC08dmVyPi1t\nYWNvcy11bml2ZXJzYWwuZG1nYCB8IFNpZ25lZCBhbmQgbm90YXJpemVkIHwK\nfCBDb21tYW5kLWxpbmUgdG9vbCwgdW5pdmVyc2FsIHwgYGRlY2tjcmFmdC1j\nbGktPHZlcj4tbWFjb3MtdW5pdmVyc2FsLnppcGAgfCBTaWduZWQgYW5kIG5v\ndGFyaXplZCB8CgojIyMgTGludXgKCnwgRm9ybWF0IHwgeDg2XzY0IHwgYWFy\nY2g2NCAoQVJNNjQpIHwgTm90ZXMgfAp8LS0tfC0tLXwtLS18LS0tfAp8IEFw\ncEltYWdlIHwgYGRlY2tjcmFmdC08dmVyPi1saW51eC14ODZfNjQuQXBwSW1h\nZ2VgIHwgYGRlY2tjcmFmdC08dmVyPi1saW51eC1hYXJjaDY0LkFwcEltYWdl\nYCB8IFJ1bnMgYW55d2hlcmU7IHVwZGF0ZXMgaXRzZWxmIHdpdGggW0FwcElt\nYWdlVXBkYXRlXShodHRwczovL2dpdGh1Yi5jb20vQXBwSW1hZ2VDb21tdW5p\ndHkvQXBwSW1hZ2VVcGRhdGUpIChgLnpzeW5jYCBmaWxlcykgfAp8IEZsYXRw\nYWsgfCBgZGVja2NyYWZ0LTx2ZXI+LWxpbnV4LXg4Nl82NC5mbGF0cGFrYCB8\nIGBkZWNrY3JhZnQtPHZlcj4tbGludXgtYWFyY2g2NC5mbGF0cGFrYCB8IFNh\nbmRib3hlZDsgYGZsYXRwYWsgaW5zdGFsbCAtLXVzZXIgPGZpbGU+YCB8Cnwg\nRGViaWFuL1VidW50dSB8IGBkZWNrY3JhZnQtPHZlcj4tbGludXgteDg2XzY0\nLmRlYmAgfCBgZGVja2NyYWZ0LTx2ZXI+LWxpbnV4LWFhcmNoNjQuZGViYCB8\nIHwKfCBGZWRvcmEvUkhFTC9vcGVuU1VTRSB8IGBkZWNrY3JhZnQtPHZlcj4t\nbGludXgteDg2XzY0LnJwbWAgfCBgZGVja2NyYWZ0LTx2ZXI+LWxpbnV4LWFh\ncmNoNjQucnBtYCB8IHwKfCBUYXJiYWxsIHwgYGRlY2tjcmFmdC08dmVyPi1s\naW51eC14ODZfNjQudGFyLmd6YCB8IGBkZWNrY3JhZnQtPHZlcj4tbGludXgt\nYWFyY2g2NC50YXIuZ3pgIHwgVW5wYWNrIGFueXdoZXJlIHwKClJJU0MtViA2\nNCAocmlzY3Y2NCk6IGBkZWNrY3JhZnQtPHZlcj4tbGludXgtcmlzY3Y2NC50\nYXIuZ3pgLCBhIHRhcmJhbGwgb25seSAoY3Jvc3MtY29tcGlsZWQ7IG5lZWRz\nIGdsaWJjIDIuMzkrLCBlLmcuIFVidW50dSAyNC4wNCspLgoKIyMjIEZyZWVC\nU0QKCnwgQnVpbGQgfCBGaWxlIHwKfC0tLXwtLS18CnwgeDg2XzY0IHwgYGRl\nY2tjcmFmdC08dmVyPi1mcmVlYnNkLXg4Nl82NC50YXIuZ3pgIHwKCiMjIyBX\nZWIgKFdlYkFzc2VtYmx5KQoKfCBCdWlsZCB8IEZpbGUgfCBOb3RlcyB8Cnwt\nLS18LS0tfC0tLXwKfCBTdGF0aWMgc2l0ZSB8IGBkZWNrY3JhZnQtd2ViLTx2\nZXI+LnppcGAgfCBSdW5zIGluIGEgbW9kZXJuIGJyb3dzZXI7IGhvc3QgaXQg\nb24gYW55IHN0YXRpYyBzZXJ2ZXIgfAoKIyMgVGhlIENyYWZ0aW5nIEFwcHMK\nCkRlY2tDcmFmdCBpcyBvbmUgb2YgdGhlICoqQ3JhZnRpbmcgQXBwcyoqOiBm\ncmVlLCBvcGVuLXNvdXJjZSBjcmVhdGl2ZSB0b29scyBmcm9tIHRoZQpbQXJ0\nQ3JhZnRdKGh0dHBzOi8vZ2V0YXJ0Y3JhZnQuY29tLykgdGVhbSwgZWFjaCB3\ncml0dGVuIGZyb20gc2NyYXRjaCBpbiBSdXN0IGFuZCBlYWNoIGFibGUgdG8K\nc3RhbmQgb24gaXRzIG93bi4KCnwgfCBBcHAgfCBXaGF0IGl0J3MgZm9yIHwg\nQ29kZSB8IExlYXJuIG1vcmUgfAp8Oi06fC0tLXwtLS18LS0tfC0tLXwKfCA8\naW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0\nb3J5dG9sZC9waG90b2NyYWZ0L21haW4vYXNzZXRzL2FwcC1pY29uL2hpY29s\nb3IvNjR4NjQvYXBwcy9haS5zdG9yeXRlbGxlci5waG90b2NyYWZ0LnBuZyIg\nYWx0PSIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+IHwgKipQaG90b0NyYWZ0\nKiogfCBJbWFnZSBlZGl0aW5nOiBsYXllcnMsIG1hc2tzLCB0eXBlIGFuZCBy\nZWFsIFBTRCBmaWxlcyB8IFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9z\ndG9yeXRvbGQvcGhvdG9jcmFmdCkgfCBbV2Vic2l0ZV0oaHR0cHM6Ly9nZXRh\ncnRjcmFmdC5jb20vYXBwcy9waG90b2NyYWZ0KSB8CnwgPGltZyBzcmM9Imh0\ndHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zdG9yeXRvbGQvdmVj\ndG9yY3JhZnQvbWFpbi9hc3NldHMvYXBwLWljb24vaGljb2xvci82NHg2NC9h\ncHBzL2FpLnN0b3J5dGVsbGVyLnZlY3RvcmNyYWZ0LnBuZyIgYWx0PSIiIHdp\nZHRoPSIzMiIgaGVpZ2h0PSIzMiI+IHwgKipWZWN0b3JDcmFmdCoqIHwgVmVj\ndG9yIGlsbHVzdHJhdGlvbiB8IFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNv\nbS9zdG9yeXRvbGQvdmVjdG9yY3JhZnQpIHwgW1dlYnNpdGVdKGh0dHBzOi8v\nZ2V0YXJ0Y3JhZnQuY29tL2FwcHMvdmVjdG9yY3JhZnQpIHwKfCA8aW1nIHNy\nYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0b3J5dG9s\nZC9maWxtY3JhZnQvbWFpbi9hc3NldHMvYXBwLWljb24vaGljb2xvci82NHg2\nNC9hcHBzL2FpLnN0b3J5dGVsbGVyLmZpbG1jcmFmdC5wbmciIGFsdD0iIiB3\naWR0aD0iMzIiIGhlaWdodD0iMzIiPiB8ICoqRmlsbUNyYWZ0KiogfCBWaWRl\nbyBlZGl0aW5nLCBjb2xvciBhbmQgc291bmQgfCBbR2l0SHViXShodHRwczov\nL2dpdGh1Yi5jb20vc3Rvcnl0b2xkL2ZpbG1jcmFmdCkgfCBbV2Vic2l0ZV0o\naHR0cHM6Ly9nZXRhcnRjcmFmdC5jb20vYXBwcy9maWxtY3JhZnQpIHwKfCA8\naW1nIHNyYz0iaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0\nb3J5dG9sZC9saWdodGNyYWZ0L21haW4vYXNzZXRzL2FwcC1pY29uL2hpY29s\nb3IvNjR4NjQvYXBwcy9haS5zdG9yeXRlbGxlci5saWdodGNyYWZ0LnBuZyIg\nYWx0PSIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+IHwgKipMaWdodENyYWZ0\nKiogfCBQaG90byBsaWJyYXJ5IGFuZCByYXcgZGV2ZWxvcG1lbnQgfCBbR2l0\nSHViXShodHRwczovL2dpdGh1Yi5jb20vc3Rvcnl0b2xkL2xpZ2h0Y3JhZnQp\nIHwgW1dlYnNpdGVdKGh0dHBzOi8vZ2V0YXJ0Y3JhZnQuY29tL2FwcHMvbGln\naHRjcmFmdCkgfAp8IDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2Vy\nY29udGVudC5jb20vc3Rvcnl0b2xkL3BkZmNyYWZ0L21haW4vYXNzZXRzL2Fw\ncC1pY29uL2hpY29sb3IvNjR4NjQvYXBwcy9haS5zdG9yeXRlbGxlci5wZGZj\ncmFmdC5wbmciIGFsdD0iIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPiB8ICoq\nUGRmQ3JhZnQqKiB8IFJlYWRpbmcsIG9yZ2FuaXppbmcgYW5kIHByb3RlY3Rp\nbmcgUERGcyB8IFtHaXRIdWJdKGh0dHBzOi8vZ2l0aHViLmNvbS9zdG9yeXRv\nbGQvcGRmY3JhZnQpIHwgW1dlYnNpdGVdKGh0dHBzOi8vZ2V0YXJ0Y3JhZnQu\nY29tL2FwcHMvcGRmY3JhZnQpIHwKfCA8aW1nIHNyYz0iaHR0cHM6Ly9yYXcu\nZ2l0aHVidXNlcmNvbnRlbnQuY29tL3N0b3J5dG9sZC9lZmZlY3RjcmFmdC9t\nYWluL2Fzc2V0cy9hcHAtaWNvbi9oaWNvbG9yLzY0eDY0L2FwcHMvYWkuc3Rv\ncnl0ZWxsZXIuZWZmZWN0Y3JhZnQucG5nIiBhbHQ9IiIgd2lkdGg9IjMyIiBo\nZWlnaHQ9IjMyIj4gfCAqKkVmZmVjdENyYWZ0KiogfCBNb3Rpb24gZ3JhcGhp\nY3MgYW5kIHZpc3VhbCBlZmZlY3RzIHwgW0dpdEh1Yl0oaHR0cHM6Ly9naXRo\ndWIuY29tL3N0b3J5dG9sZC9lZmZlY3RjcmFmdCkgfCBbV2Vic2l0ZV0oaHR0\ncHM6Ly9nZXRhcnRjcmFmdC5jb20vYXBwcy9lZmZlY3RjcmFmdCkgfAp8IDxp\nbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3Rv\ncnl0b2xkL2Rlc2lnbmNyYWZ0L21haW4vYXNzZXRzL2FwcC1pY29uL2hpY29s\nb3IvNjR4NjQvYXBwcy9haS5zdG9yeXRlbGxlci5kZXNpZ25jcmFmdC5wbmci\nIGFsdD0iIiB3aWR0aD0iMzIiIGhlaWdodD0iMzIiPiB8ICoqRGVzaWduQ3Jh\nZnQqKiB8IFBhZ2UgbGF5b3V0IGFuZCBwdWJsaXNoaW5nIHwgW0dpdEh1Yl0o\naHR0cHM6Ly9naXRodWIuY29tL3N0b3J5dG9sZC9kZXNpZ25jcmFmdCkgfCBb\nV2Vic2l0ZV0oaHR0cHM6Ly9nZXRhcnRjcmFmdC5jb20vYXBwcy9kZXNpZ25j\ncmFmdCkgfAp8IDxpbWcgc3JjPSJodHRwczovL3Jhdy5naXRodWJ1c2VyY29u\ndGVudC5jb20vc3Rvcnl0b2xkL2RlY2tjcmFmdC9tYWluL2Fzc2V0cy9hcHAt\naWNvbi9oaWNvbG9yLzY0eDY0L2FwcHMvYWkuc3Rvcnl0ZWxsZXIuZGVja2Ny\nYWZ0LnBuZyIgYWx0PSIiIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiI+IHwgKipE\nZWNrQ3JhZnQqKiB8ICoqUHJlc2VudGF0aW9ucyBhbmQgc2xpZGUgc2hvd3Mg\nwrcgeW91IGFyZSBoZXJlKiogfCBbR2l0SHViXShodHRwczovL2dpdGh1Yi5j\nb20vc3Rvcnl0b2xkL2RlY2tjcmFmdCkgfCBbV2Vic2l0ZV0oaHR0cHM6Ly9n\nZXRhcnRjcmFmdC5jb20vYXBwcy9kZWNrY3JhZnQpIHwKCkFuZCBbKipBcnRD\ncmFmdCoqXShodHRwczovL2dldGFydGNyYWZ0LmNvbS8pIGl0c2VsZiwgb3Vy\nIEFJIGltYWdlIGFuZCB2aWRlbyBzdHVkaW8gZm9yIGFydGlzdHMgd2hvIHdh\nbnQgcmVhbCBjb250cm9sLgoKPGJyPgoKPHAgYWxpZ249ImNlbnRlciI+CiAg\nPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL2FydGNyYWZ0Ij48aW1nIGFs\ndD0iSm9pbiB0aGUgQXJ0Q3JhZnQgY29tbXVuaXR5IG9uIERpc2NvcmQiIHNy\nYz0iaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9iYWRnZS9Kb2luJTIwdXMlMjBv\nbiUyMERpc2NvcmQtNTg2NUYyP3N0eWxlPWZvci10aGUtYmFkZ2UmbG9nbz1k\naXNjb3JkJmxvZ29Db2xvcj13aGl0ZSIgaGVpZ2h0PSI0MCI+PC9hPgo8L3A+\nCgo8aDMgYWxpZ249ImNlbnRlciI+Q29tZSBtYWtlIHRoaW5ncyB3aXRoIHVz\nPC9oMz4KCjxwIGFsaWduPSJjZW50ZXIiPgogIE91ciBEaXNjb3JkIGlzIHdo\nZXJlIGFydGlzdHMgb2YgZXZlcnkga2luZCBoYW5nIG91dDogcGVvcGxlIHdo\nbyBwYWludCwgc2hvb3QsIGRyYXcsIGN1dCBmaWxtLAogIHNldCB0eXBlLCBh\nbmQgcGVvcGxlIHN0aWxsIGZpZ3VyaW5nIG91dCB3aGF0IHRoZXkgbGlrZSB0\nbyBtYWtlLiBTaGFyZSB3aGF0IHlvdSdyZSB3b3JraW5nIG9uLAogIGFzayBm\nb3IgaGVscCwgdGVsbCB1cyB3aGF0J3MgYnJva2VuLCBvciB0ZWxsIHVzIHdo\nYXQgeW91IHdpc2ggdGhlc2UgdG9vbHMgY291bGQgZG8uCiAgV2hhdGV2ZXIg\neW91ciBtZWRpdW0gYW5kIGhvd2V2ZXIgbG9uZyB5b3UndmUgYmVlbiBhdCBp\ndCwgeW91J3JlIHdlbGNvbWUgaGVyZS4KPC9wPgoKPHAgYWxpZ249ImNlbnRl\nciI+CiAgPGEgaHJlZj0iaHR0cHM6Ly9kaXNjb3JkLmdnL2FydGNyYWZ0Ij48\nYj5kaXNjb3JkLmdnL2FydGNyYWZ0PC9iPjwvYT4gwrcKICA8YSBocmVmPSJo\ndHRwczovL2dldGFydGNyYWZ0LmNvbS8iPmdldGFydGNyYWZ0LmNvbTwvYT4g\nwrcKICA8YSBocmVmPSJodHRwczovL2dldGFydGNyYWZ0LmNvbS9hcHBzIj5U\naGUgQ3JhZnRpbmcgQXBwczwvYT4gwrcKICA8YSBocmVmPSJodHRwczovL2dl\ndGFydGNyYWZ0LmNvbS9hcHBzL2RlY2tjcmFmdCI+RGVja0NyYWZ0PC9hPgo8\nL3A+CgojIyBMaWNlbnNlIGFuZCBjcmVkaXRzCgpEZWNrQ3JhZnQgaXMgZHVh\nbC1saWNlbnNlZCB1bmRlciBbTUlUXShMSUNFTlNFLU1JVCkgb3IgW0FwYWNo\nZS0yLjBdKExJQ0VOU0UtQVBBQ0hFKSwgYXQgeW91ciBvcHRpb24uCkNvcHly\naWdodCAoYykgMjAyNiBBcnRDcmFmdCBUZWFtIGFuZCB0aGUgRGVja0NyYWZ0\nIGNvbnRyaWJ1dG9ycy4gUmVxdWlyZWQgbm90aWNlcyBhcmUgaW4gW05PVElD\nRV0oTk9USUNFKS4KCkJ1bmRsZWQgZm9udHMsIGljb25zLCBpbWFnZXMgYW5k\nIG90aGVyIGFzc2V0cyBrZWVwIHRoZWlyIG93biBvcGVuIGxpY2Vuc2VzOyBl\nYWNoIG9uZSBpcyBsaXN0ZWQKd2l0aCBpdHMgYXV0aG9yLCBzb3VyY2UgYW5k\nIGxpY2Vuc2UgaW4gW0FUVFJJQlVUSU9OLm1kXShBVFRSSUJVVElPTi5tZCku\nCgpEZWNrQ3JhZnQncyB0aGVtZXMsIGxheW91dHMsIHNoYXBlIGdlb21ldHJ5\nLCBpY29ucyBhbmQgc2FtcGxlIGRlY2tzIGFyZSBvcmlnaW5hbCB3b3JrLCBk\ncmF3biBvcgpnZW5lcmF0ZWQgaW4gY29kZTsgbm8gcHJvcHJpZXRhcnkgYXJ0\nd29yaywgZm9udHMsIHRoZW1lcyBvciB0ZW1wbGF0ZXMgYXJlIHVzZWQuCgpU\naGUgQXJ0Q3JhZnQgbmFtZSwgd29yZG1hcmsgYW5kIGxvZ29zIGluIFtgZG9j\ncy9icmFuZC9gXShkb2NzL2JyYW5kLykgYXJlIHRyYWRlbWFya3Mgb2YgdGhl\nCkFydENyYWZ0IFRlYW0gYW5kIGFyZSBub3QgY292ZXJlZCBieSB0aGlzIGxp\nY2Vuc2UuIFRoZXkgbWF5IGJlIHVzZWQgb25seSB1bm1vZGlmaWVkLCBhbmQg\nb25seSBhcwpwYXJ0IG9mIHRoaXMgcmVwb3NpdG9yeSBhbmQgRGVja0NyYWZ0\nLCB1bmRlciBbYGRvY3MvY