{"id":2771,"date":"2022-04-19T09:19:11","date_gmt":"2022-04-19T15:19:11","guid":{"rendered":"http:\/\/wp.lps.org\/aholdor\/?page_id=2771"},"modified":"2026-04-01T13:55:18","modified_gmt":"2026-04-01T18:55:18","slug":"cryptogram","status":"publish","type":"page","link":"https:\/\/home.lps.org\/aholdor\/cryptogram\/","title":{"rendered":"Cryptogram"},"content":{"rendered":"\n<style>\ndiv {\n    margin: 2em;\n}\n#canvas{\n  border: 1px solid black;\n}\n.right{\n  float: right;\n}\n.left{\n  float: left;\n}\n.clear{\n  clear: both;\n}\ninput{\n  margin-left: 50px;\n  margin-right: 50px;\n}\n<\/style>\n<ul>\n<li>To choose a letter, click on or above any purple letter and type what letter you think it represents.<\/li>\n<li>To clear a letter or choose a new one, click again.<\/li>\n<li>There is no indication of correct vs. incorrect letters, but if you finish it correctly you will be notified.<\/li>\n<li>The currently selected letter will highlight throughout the puzzle.<\/li>\n<\/ul>\n<input type=\"button\" id=\"new\" value=\"New Puzzle\" class=\"right\"\/>\n<input type=\"button\" id=\"hint\" value=\"Give me a hint! (5)\" \/>\n<div class=\"clear\">\n    <canvas id=\"canvas\" width=\"800\" height=\"600\"><link rel=\"stylesheet\" href=\"style.css\">\n<script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/3.7.1\/jquery.min.js\"><\/script>\n<script src=\"script.js\"><\/script><\/canvas>\n<\/div>\n<script>\nlet base64Code = \"dmFyIGc7CnZhciBhbHBoYSA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIuc3BsaXQoIiIpOwp2YXIga2V5ID0gW107CnZhciBtYXBwaW5nID0gewogIEE6ICIiLAogIEI6ICIiLAogIEM6ICIiLAogIEQ6ICIiLAogIEU6ICIiLAogIEY6ICIiLAogIEc6ICIiLAogIEg6ICIiLAogIEk6ICIiLAogIEo6ICIiLAogIEs6ICIiLAogIEw6ICIiLAogIE06ICIiLAogIE46ICIiLAogIE86ICIiLAogIFA6ICIiLAogIFE6ICIiLAogIFI6ICIiLAogIFM6ICIiLAogIFQ6ICIiLAogIFU6ICIiLAogIFY6ICIiLAogIFc6ICIiLAogIFg6ICIiLAogIFk6ICIiLAogIFo6ICIiCn07CnZhciBtZXNzYWdlID0gIiI7CnZhciBoaW50cyA9IDU7CnZhciBoaW50TGV0dGVycyA9IFtdOwp2YXIgZ3Vlc3NlZExldHRlcnMgPSBbXTsKdmFyIGVycm9ySW5kZXggPSAtMTsKdmFyIG1lc3NhZ2VPcHRpb25zID0gWwoiVEhFIFFVSUNLIEJST1dOIEZPWCBKVU1QUyBPVkVSIFRIRSBMQVpZIERPRy4iLAoiU0FMTFkgU0VMTFMgU0VBU0hFTExTIEJZIFRIRSBTRUEgU0hPUkUuIiwKIkRPLCBPUiBETyBOT1QuIFRIRVJFIElTIE5PIFRSWS4gfi1ZT0RBIiwKIkNBRVNBUiBDSVBIRVJTIEVOQ09ERSBCWSBTSElGVElORyBMRVRURVJTLiIsCiJTSFVGRkxFIENJUEhFUlMgQ0hBTkdFIFRIRSBPUkRFUiBPRiBUSEUgQUxQSEFCRVQuIiwKIk9OTFkgWU9VIENBTiBQUkVWRU5UIEZPUkVTVCBGSVJFUy4gfi1TTU9LRVkgVEhFIEJFQVIiLAoiRE8gWU9VIEtOT1cgVEhFIE1VRkZJTiBNQU4\/IiwKIlJFTUVNQkVSLCBSRU1FTUJFUiwgVEhFIEZJRlRIIE9GIE5PVkVNQkVSLiIsCiJXSEVSRSBJTiBUSEUgV09STEQgSVMgQ0FSTUVOIFNBTkRJRUdPPyIsCiJcIkkgV0FOVCBJVCBUSEFUIFdBWVwiIH4gfkJZIFRIRSBCQUNLU1RSRUVUIEJPWVMiLAoiV0FSIElTIEEgQ09XQVJETFkgRVNDQVBFIEZST00gVEhFIFBST0JMRU1TIE9GIFBFQUNFLiB+LVRIT01BUyBNQU5OIiwKIkkgQ0FOIFJFU0lTVCBBTllUSElORyBCVVQgVEVNUFRBVElPTi4gfi1PU0NBUiBXSUxERSIsCiJTUEVBSyBTT0ZUTFkgQU5EIENBUlJZIEEgQklHIFNUSUNLLiB+LVRIRU9ET1JFIFJPT1NFVkVMVCIsCiJGT1JUVU5FIEZBVk9SUyBUSEUgQk9MRC4iLAoiV0hFTiBMSUZFIEdJVkVTIFlPVSBMRU1PTlMsIE1BS0UgTEVNT05BREUuIiwKIk5PVCBBTEwgV0hPIFdBTkRFUiBBUkUgTE9TVC4gfi1UT0xLSUVOIiwKIktFTk9CSTogSEVMTE8gVEhFUkUgfkdSSUVWT1VTOiBHRU5FUkFMIEtFTk9CSSIsCiJCSUxMIE5ZRSBUSEUgU0NJRU5DRSBHVVkiLAoiSE9NRVIsIE1BUkdFLCBCQVJULCBMSVNBLCBBTkQgTUFHR0lFIFNJTVBTT04iLAoiVEhFIFBFUklPRElDIFRBQkxFIE9GIFRIRSBFTEVNRU5UUyIsCiJcIldBS0UgTUUgVVAgV0hFTiBTRVBURU1CRVIgRU5EU1wiIH4gfkJZIEdSRUVOIERBWSIsCiJUSEUgRUFSTFkgQklSRCBHRVRTIFRIRSBXT1JNLiIsCiJJVCBUQUtFUyBPTkUgVE8gS05PVyBPTkUuIiwKIktJTEwgVFdPIEJJUkRTIFdJVEggT05FIFNUT05FLiIsCiJHTyBCQUNLIFRPIFRIRSBEUkFXSU5HIEJPQVJELiIsCiJUTyBNQUtFIEEgTE9ORyBTVE9SWSBTSE9SVC4uLiIsCiJZT1UgQVJFIEVMQVNUSUdJUkwhIE1ZIEdPRC4gUFVMTCBZT1VSU0VMRiBUT0dFVEhFUiEgfi1FRE5BIE1PREUiLAoiVElNRSBGTElFUyBXSEVOIFlPVSBBUkUgSEFWSU5HIEZVTi4iLAoiV0UgV0lMTCBDUk9TUyBUSEFUIEJSSURHRSBXSEVOIFdFIENPTUUgVE8gSVQuIiwKIkEgQklSRCBJTiBUSEUgSEFORCBJUyBXT1JUSCBUV08gSU4gVEhFIEJVU0guIiwKIkEgUEVOTlkgU0FWRUQgSVMgQSBQRU5OWSBFQVJORUQuIiwKIkFDVElPTlMgU1BFQUsgTE9VREVSIFRIQU4gV09SRFMuIiwKIkJJUkRTIE9GIEEgRkVBVEhFUiBGTE9DSyBUT0dFVEhFUi4iLAoiRE8gVU5UTyBPVEhFUlMgQVMgWU9VIFdPVUxEIEhBVkUgVEhFTSBETyBVTlRPIFlPVS4iLAoiRVZFUlkgQ0xPVUQgSEFTIEEgU0lMVkVSIExJTklORy4iLAoiR09PRCBUSElOR1MgQ09NRSBUTyBUSE9TRSBXSE8gV0FJVC4iLAoiTEVUIFRIRSBDQVQgT1VUIE9GIFRIRSBCQUcuIiwKIlNMT1cgQU5EIFNURUFEWSBXSU5TIFRIRSBSQUNFLiIsCiJUSEUgVEhSRUUgTElUVExFIFBJR1MiLAoiR09MRElMT0NLUyBBTkQgVEhFIFRIUkVFIEJFQVJTIiwKIlRIRSBUT1JUT0lTRSBBTkQgVEhFIEhBUkUiLAoiSVQgVEFLRVMgVFdPIFRPIFRBTkdPLiIsCiJSVU4gTElLRSBUSEUgV0lORCEiLAoiVEhFIFBSSU5DRVNTIEFORCBUSEUgUEVBIiwKIkJFQVVUWSBBTkQgVEhFIEJFQVNUIiwKIkxJVFRMRSBSRUQgUklESU5HIEhPT0QiLAoiU05PVyBXSElURSBBTkQgVEhFIFNFVkVOIERXQVJWRVMiLAoiUEVURVIgUElQRVIgUElDS0VEIEEgUEFDSyBPRiBQSUNLTEVEIFBFUFBFUlMuIiwKIkhPVyBNVUNIIFdPT0QgV09VTEQgQSBXT09EQ0hVQ0sgQ0hVQ0sgSUYgQSBXT09EQ0hVQ0sgQ09VTEQgQ0hVQ0sgV09PRD8iLAoiU0hSRUsgQU5EIEZJT05BIiwKIlRIT01BUyBUSEUgVFJBSU4gRU5HSU5FIiwKIkRPUkEgVEhFIEVYUExPUkVSIiwKIkJPQiBUSEUgQlVJTERFUiIsCiJXUkVDSyBJVCBSQUxQSCIsCiJcIk9WRVIgVEhFIFJBSU5CT1dcIiB+IH5GUk9NIFRIRSBXSVpBUkQgT0YgT1oiLAoiRElORyEgRE9ORyEgVEhFIFdJVENIIElTIERFQUQhIiwKIldFTENPTUUgVE8gR09PREJVUkdFUiwgSE9NRSBPRiBUSEUgR09PREJVUkdFUiwgQ0FOIEkgVEFLRSBZT1VSIE9SREVSPyIsCiJJIFNPTEVNTkxZIFNXRUFSIFRIQVQgSSBBTSBVUCBUTyBOTyBHT09ELiIsCiJMSUZFIFdBUyBMSUtFIEEgQk9YIE9GIENIT0NPTEFURVMgfi1GT1JSRVNUIEdVTVAiLAoiVEhFIENBVCBJTiBUSEUgSEFUIiwKIklGIFlPVSBXQU5UIFRPIENIQU5HRSBUSEUgV09STEQsIFNUQVJUIFdJVEggWU9VUlNFTEYuIH4tTUFIQVRNQSBHQU5ESEkiLAoiSSBETyBOT1QgTElLRSBHUkVFTiBFR0dTIEFORCBIQU0uIEkgRE8gTk9UIExJS0UgVEhFTSwgU0FNIEkgQU0uIiwKIkkgQU0gVEhFIExPUkFYLCBJIFNQRUFLIEZPUiBUSEUgVFJFRVMuIH4tVEhFIExPUkFYIiwKIkNISUNLQSBDSElDS0EgQk9PTSBCT09NLCBXSUxMIFRIRVJFIEJFIEVOT1VHSCBST09NPyBIRVJFIENPTUVTIEgsIEksIEosIEFORCBLLiIsCiJPTkUgRklTSCwgVFdPIEZJU0gsIFJFRCBGSVNILCBCTFVFIEZJU0guIiwKIlwiU0VQVEVNQkVSXCIgfiB+QlkgRUFSVEgsIFdJTkQsIEFORCBGSVJFIiwKIklOU0FOSVRZIElTIERPSU5HIFRIRSBTQU1FIFRISU5HIE9WRVIgQU5EIE9WRVIgQU5EIEVYUEVDVElORyBESUZGRVJFTlQgUkVTVUxUUy4gfi1SSVRBIE1BRSBCUk9XTiIsCiJMSUZFIElTIExJS0UgQSBHQU1FIE9GIENIRVNTLiBJIERPTidUIEtOT1cgSE9XIFRPIFBMQVkgQ0hFU1MiLAoiWU9VIEVJVEhFUiBESUUgQSBIRVJPLCBPUiBMSVZFIExPTkcgRU5PVUdIIFRPIFNFRSBZT1VSU0VMRiBCRUNPTUUgVEhFIFZJTExBSU4iLAoiVEFOQVlUSEEgV0FTIEhFUkUiCl07CnZhciBjbGlja2VkQm94ID0gLTE7CgpmdW5jdGlvbiByZXZlcnNlTWFwKGZyb20pewoJZm9yKHZhciBpPTA7aTwyNjtpKyspewogIAlpZihtYXBwaW5nW2FscGhhW2ldXSA9PSBmcm9tKXsKICAgIAlyZXR1cm4gYWxwaGFbaV07CiAgICB9CiAgfQogIHJldHVybiAiIjsKfQoKZnVuY3Rpb24gc2h1ZmZsZUFscGhhYmV0KCkgewogIHZhciBjb3B5ID0gYWxwaGEuc2xpY2UoMCk7CiAga2V5ID0gW107CiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNjsgaSsrKSB7CiAgICB2YXIgaW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29weS5sZW5ndGgpOwogICAga2V5LnB1c2goY29weVtpbmRdKTsKICAgIGNvcHkuc3BsaWNlKGluZCwxKTsKICB9CiAgZm9yKHZhciBpPTA7aTwyNTtpKyspewogIAlpZihrZXlbaV0gPT0gYWxwaGFbaV0pewogICAgCXZhciB0ZW1wID0ga2V5W2ldOwogICAgICBrZXlbaV0gPSBrZXlbMjVdOwogICAgICBrZXlbMjVdID0gdGVtcDsKICAgIH0KICB9CiAgaWYoa2V5WzI1XSA9PSBhbHBoYVsyNV0pewogIAl2YXIgaW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjI1KTsKICAgIHZhciB0ZW1wID0ga2V5WzI1XTsKICAgIGtleVsyNV0gPSBrZXlbaW5kXTsKICAgIGtleVtpbmRdID0gdGVtcDsKICB9Cn0KCmZ1bmN0aW9uIHBpY2tNZXNzYWdlKCkgewogIHZhciBpbmQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBtZXNzYWdlT3B0aW9ucy5sZW5ndGgpOwogIG1lc3NhZ2UgPSBtZXNzYWdlT3B0aW9uc1tpbmRdOwp9CgpmdW5jdGlvbiBlbmNvZGUobWVzc2FnZSkgewogIG1lc3NhZ2UgPSBtZXNzYWdlLnRvVXBwZXJDYXNlKCk7CiAgdmFyIG91dHB1dCA9ICIiOwogIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZS5sZW5ndGg7IGkrKykgewogICAgaWYgKGFscGhhLmluY2x1ZGVzKG1lc3NhZ2VbaV0pKSB7CiAgICAgIG91dHB1dCArPSBrZXlbYWxwaGEuaW5kZXhPZihtZXNzYWdlW2ldKV07CiAgICB9IGVsc2UgewogICAgICBvdXRwdXQgKz0gbWVzc2FnZVtpXTsKICAgIH0KICB9CiAgcmV0dXJuIG91dHB1dDsKfQoKZnVuY3Rpb24gY2hlY2tXaW4oKSB7CiAgZm9yICh2YXIgaSA9IDA7IGkgPCAyNjsgaSsrKSB7CiAgICBpZiAobWVzc2FnZS5pbmNsdWRlcyhhbHBoYVtpXSkgJiYgbWFwcGluZ1tlbmNvZGUoYWxwaGFbaV0pXSAhPSBhbHBoYVtpXSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgfQogIHJldHVybiB0cnVlOwp9CgpmdW5jdGlvbiBkZWNvZGUobWVzc2FnZSkgewogIG1lc3NhZ2UgPSBtZXNzYWdlLnRvVXBwZXJDYXNlKCk7CiAgdmFyIG91dHB1dCA9ICIiOwogIGZvciAodmFyIGkgPSAwOyBpIDwgbWVzc2FnZS5sZW5ndGg7IGkrKykgewogICAgaWYgKGFscGhhLmluY2x1ZGVzKG1lc3NhZ2VbaV0pKSB7CiAgICAgIG91dHB1dCArPSBhbHBoYVtrZXkuaW5kZXhPZihtZXNzYWdlW2ldKV07CiAgICB9IGVsc2UgewogICAgICBvdXRwdXQgKz0gbWVzc2FnZVtpXTsKICAgIH0KICB9CiAgcmV0dXJuIG91dHB1dDsKfQoKZnVuY3Rpb24gYXBwbHlNYXBwaW5nKGZyb20sIHRvKSB7CiAgbWFwcGluZ1tmcm9tXSA9IHRvOwp9CgoKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgYyA9ICQoIiNjYW52YXMiKVswXTsKICBnID0gYy5nZXRDb250ZXh0KCIyZCIpOwogIHNodWZmbGVBbHBoYWJldCgpOwogIHBpY2tNZXNzYWdlKCk7CiAgZHJhdygpOwp9KTsKCmZ1bmN0aW9uIHJlbW92ZUl0ZW0obGlzdCxpdGVtKXsKCXZhciBpbmQgPSBsaXN0LmluZGV4T2YoaXRlbSk7CiAgbGlzdC5zcGxpY2UoaW5kLDEpOwogIHJldHVybiBsaXN0Owp9CgokKCIjY2FudmFzIikub24oIm1vdXNlZG93biIsIGZ1bmN0aW9uKGUpIHsKICB2YXIgcmVjdCA9IGMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgdmFyIHggPSBlLmNsaWVudFggLSByZWN0LmxlZnQ7CiAgdmFyIHkgPSBlLmNsaWVudFkgLSByZWN0LnRvcDsKCiAgaWYgKHkgPj0gNTAgJiYgeSA8PSAxMDApIHsKICAgIGNsaWNrZWRCb3ggPSBNYXRoLmZsb29yKCh4IC0gMjUpIC8gMjUpOwogICAgZmFjaWxpdGF0ZUNsaWNrKCk7CiAgfWVsc2V7CiAgCQogICAgdmFyIHRvRHJhdyA9IG11bHRpTGluZShtZXNzYWdlKTsKICAgCW91dGVyOiBmb3IgKHZhciBpID0gMDsgaSA8IHRvRHJhdy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgcXVvdGVTaGlmdCA9IHRvRHJhd1tpXVswXSA9PSAiLSIgPyA3NTAtdG9EcmF3W2ldLmxlbmd0aCozMCA6IDA7CiAgICAgIGlubmVyOiBmb3IgKHZhciBqID0gMDsgaiA8IHRvRHJhd1tpXS5sZW5ndGg7IGorKykgewogICAgICAgIGlmIChhbHBoYS5pbmNsdWRlcyh0b0RyYXdbaV1bal0pKSB7CiAgICAgICAgICBpZiAodG9EcmF3W2ldW2pdICE9ICIgIikgewogICAgICAgICAgICBpZih4ID49IHF1b3RlU2hpZnQgKyAyNSArIDMwICogaiAmJiB4IDw9IHF1b3RlU2hpZnQgKyA1MCArIDMwICogaiAmJiB5ID49IDE2NSArIDc1ICogaSAmJiB5IDw9IDIzNSArIDc1ICogaSl7CiAgICAgICAgICAgIAljbGlja2VkQm94ID0gYWxwaGEuaW5kZXhPZihlbmNvZGUodG9EcmF3W2ldW2pdKSk7CiAgICAgICAgICAgICAgYnJlYWsgb3V0ZXI7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAJY2xpY2tlZEJveCA9IC0xOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICBmYWNpbGl0YXRlQ2xpY2soKTsKICB9CgogIGRyYXcoKTsKfSk7CgpmdW5jdGlvbiBmYWNpbGl0YXRlQ2xpY2soKXsKICBpZihjbGlja2VkQm94ID49IDAgJiYgY2xpY2tlZEJveCA8IDI2ICYmIGhpbnRMZXR0ZXJzLmluY2x1ZGVzKGFscGhhW2NsaWNrZWRCb3hdKSl7CiAgICBjbGlja2VkQm94ID0gLTE7CiAgfWVsc2V7CiAgICBpZihndWVzc2VkTGV0dGVycy5pbmNsdWRlcyhtYXBwaW5nW2FscGhhW2NsaWNrZWRCb3hdXSkpewogICAgICByZW1vdmVJdGVtKGd1ZXNzZWRMZXR0ZXJzLG1hcHBpbmdbYWxwaGFbY2xpY2tlZEJveF1dKTsKICAgIH0KICAgIG1hcHBpbmdbYWxwaGFbY2xpY2tlZEJveF1dID0gIiI7CiAgfQp9CgokKGRvY3VtZW50KS5vbigia2V5cHJlc3MiLCBmdW5jdGlvbihlKSB7CiAgaWYgKGNsaWNrZWRCb3ggPj0gMCAmJiBjbGlja2VkQm94IDwgMjYpIHsKICAJdmFyIGxldHRlciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZS53aGljaCkudG9VcHBlckNhc2UoKTsKICAgIGlmKCFndWVzc2VkTGV0dGVycy5pbmNsdWRlcyhsZXR0ZXIpKXsKICAgICAgbWFwcGluZ1thbHBoYVtjbGlja2VkQm94XV0gPSBsZXR0ZXI7CiAgICAgIGd1ZXNzZWRMZXR0ZXJzLnB1c2gobGV0dGVyKTsKICAgICAgY2xpY2tlZEJveCA9IC0xOwogICAgICBkcmF3KCk7CiAgICAgIGlmIChjaGVja1dpbigpKSB7CiAgICAgICAgc2V0VGltZW91dCh3aW5Ob3RpY2UsIDEwMDApOwogICAgICB9CiAgICB9ZWxzZXsKICAgIAllcnJvckluZGV4ID0gYWxwaGEuaW5kZXhPZihyZXZlcnNlTWFwKGxldHRlcikpOwogICAgICBkcmF3KCk7CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlcnJvckluZGV4PS0xO2RyYXcoKTt9LDEwMDApOwogICAgfQogIH0KfSk7CgpmdW5jdGlvbiBuZXdQdXp6bGUoKXsKICBzaHVmZmxlQWxwaGFiZXQoKTsKICBmb3IgKHZhciBpID0gMDsgaSA8IDI2OyBpKyspIHsKICAgIG1hcHBpbmdbYWxwaGFbaV1dID0gIiI7CiAgfQogIHBpY2tNZXNzYWdlKCk7CiAgaGludHMgPSA1OwogIGhpbnRMZXR0ZXJzID0gW107CiAgZ3Vlc3NlZExldHRlcnMgPSBbXTsKICAkKCIjaGludCIpLnZhbCgiR2l2ZSBtZSBhIGhpbnQhICg1KSIpOwogIGRyYXcoKTsKfQoKZnVuY3Rpb24gd2luTm90aWNlKCkgewogIGFsZXJ0KCJZb3UgZ290IGl0ISIpOwogIG5ld1B1enpsZSgpOwp9CgokKCIjbmV3Iikub24oImNsaWNrIixmdW5jdGlvbihlKXsKCW5ld1B1enpsZSgpOwp9KTsKCiQoIiNoaW50Iikub24oImNsaWNrIiwgZnVuY3Rpb24oZSkgewogIGlmIChoaW50cyA+IDApIHsKICAgIHZhciBjaGVja3N1bSA9IDA7CiAgICB2YXIgaW5kID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMjYpOwogICAgd2hpbGUgKCFtZXNzYWdlLmluY2x1ZGVzKGFscGhhW2luZF0pIHx8IG1hcHBpbmdbZW5jb2RlKGFscGhhW2luZF0pXSA9PSBhbHBoYVtpbmRdKSB7CiAgICAgIGluZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDI2KTsKICAgICAgY2hlY2tzdW0rKzsKICAgICAgaWYgKGNoZWNrc3VtID4gMTAwMCkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogICAgaGludHMtLTsKICAgIGhpbnRMZXR0ZXJzLnB1c2goZW5jb2RlKGFscGhhW2luZF0pKTsKICAgIGd1ZXNzZWRMZXR0ZXJzLnB1c2goYWxwaGFbaW5kXSk7CiAgICBpZihtYXBwaW5nW2VuY29kZShhbHBoYVtpbmRdKV0gIT0gIiIpewogICAgCWd1ZXNzZWRMZXR0ZXJzID0gcmVtb3ZlSXRlbShndWVzc2VkTGV0dGVycyxtYXBwaW5nW2VuY29kZShhbHBoYVtpbmRdKV0pOwogICAgfQogICAgbWFwcGluZ1tlbmNvZGUoYWxwaGFbaW5kXSldID0gYWxwaGFbaW5kXTsKICAgIGRyYXcoKTsKICAgICQoIiNoaW50IikudmFsKCJHaXZlIG1lIGEgaGludCEgKCIgKyBoaW50cyArICIpIik7CiAgfQp9KTsKCmZ1bmN0aW9uIGRyYXcoKSB7CiAgZy5maWxsU3R5bGUgPSAiI0ZGRkZGRiI7CiAgZy5maWxsUmVjdCgwLCAwLCA4MDAsIDYwMCk7CiAgZHJhd01hcHBpbmcoKTsKICBkcmF3TWVzc2FnZSgpOwp9CgpmdW5jdGlvbiBkcmF3TWFwcGluZygpIHsKICBmb3IgKHZhciBpID0gMDsgaSA8IDI2OyBpKyspIHsKICAgIGcuZmlsbFN0eWxlID0gIiMwMDAwMDAiOwogICAgaWYoZXJyb3JJbmRleCA9PSBpKXsKICAgIAlnLmZpbGxTdHlsZSA9ICIjRkZDQ0NDIjsKICAgIH1lbHNlIGlmKGhpbnRMZXR0ZXJzLmluY2x1ZGVzKGFscGhhW2ldKSl7CiAgICAJZy5maWxsU3R5bGUgPSAiI0NDQ0NGRiI7CiAgICB9ZWxzZSBpZihjbGlja2VkQm94ID09IGkpIHsKICAgICAgZy5maWxsU3R5bGUgPSAiI0NDRkZDQyI7CiAgICB9IGVsc2UgewogICAgICBnLmZpbGxTdHlsZSA9ICIjRkZGRkZGIjsKICAgIH0KICAgIGcuZmlsbFJlY3QoMjUgKyAyNSAqIGksIDUwLCAyNSwgNTApOwogICAgZy5zdHJva2VSZWN0KDI1ICsgMjUgKiBpLCA1MCwgMjUsIDI1KTsKICAgIGcuc3Ryb2tlUmVjdCgyNSArIDI1ICogaSwgNzUsIDI1LCAyNSk7CiAgICBnLmZpbGxTdHlsZSA9ICIjMDAwMDAwIjsKICAgIGcuZm9udCA9ICdib2xkIDIwcHggc2VyaWYnOwogIAl2YXIgbGVuZ3RoID0gZy5tZWFzdXJlVGV4dChtYXBwaW5nW2FscGhhW2ldXSkud2lkdGg7CiAgICBnLmZpbGxUZXh0KG1hcHBpbmdbYWxwaGFbaV1dLCAzNy41LWxlbmd0aC8yICsgMjUgKiBpLCA3MCk7CiAgICBnLmZvbnQgPSAnYm9sZCAxNXB4IHNlcmlmJzsKICAgIGxlbmd0aCA9IGcubWVhc3VyZVRleHQoYWxwaGFbaV0pLndpZHRoOwogICAgZy5maWxsU3R5bGUgPSAiI0FBMjJBQSI7CiAgICBnLmZpbGxUZXh0KGFscGhhW2ldLCAzNy41LWxlbmd0aC8yICsgMjUgKiBpLCA5NSk7CiAgfQp9CgpmdW5jdGlvbiBtdWx0aUxpbmUobSkgewogIHZhciB3b3JkcyA9IG0uc3BsaXQoIiAiKTsKICB2YXIgb3V0cHV0ID0gWyIiXTsKICB2YXIgcm93ID0gMDsKICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7CiAgICBpZiAod29yZHNbaV1bMF0gPT0gIn4iKSB7CiAgICAgIHJvdysrOwogICAgICBvdXRwdXQucHVzaCh3b3Jkc1tpXS5zbGljZSgxKSArICIgIik7CiAgICB9IGVsc2UgaWYgKG91dHB1dFtyb3ddLmxlbmd0aCArIHdvcmRzW2ldLmxlbmd0aCA8PSAyNSkgewogICAgICBvdXRwdXRbcm93XSArPSB3b3Jkc1tpXSArICIgIjsKICAgIH0gZWxzZSB7CiAgICAgIHJvdysrOwogICAgICBvdXRwdXQucHVzaCh3b3Jkc1tpXSArICIgIik7CiAgICB9CiAgfQogIHJldHVybiBvdXRwdXQ7Cn0KCmZ1bmN0aW9uIGRyYXdNZXNzYWdlKCkgewogIHZhciB0b0RyYXcgPSBtdWx0aUxpbmUobWVzc2FnZSk7CiAgZy5maWxsU3R5bGUgPSAiIzAwMDAwMCI7CiAgZy5zdHJva2VTdHlsZSA9ICIjMDAwMDAwIjsKICBmb3IgKHZhciBpID0gMDsgaSA8IHRvRHJhdy5sZW5ndGg7IGkrKykgewogIAl2YXIgcXVvdGVTaGlmdCA9IHRvRHJhd1tpXVswXSA9PSAiLSIgPyA3NTAtdG9EcmF3W2ldLmxlbmd0aCozMCA6IDA7CiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRvRHJhd1tpXS5sZW5ndGg7IGorKykgewogICAgICBpZiAoYWxwaGEuaW5jbHVkZXModG9EcmF3W2ldW2pdKSkgewogICAgICAgIGlmICh0b0RyYXdbaV1bal0gIT0gIiAiKSB7CiAgICAgICAgCWlmIChoaW50TGV0dGVycy5pbmNsdWRlcyhlbmNvZGUodG9EcmF3W2ldW2pdKSkpewogICAgICAgICAgCWcuZmlsbFN0eWxlID0gIiNDQ0NDRkYiOwogICAgICAgICAgICBnLmZpbGxSZWN0KHF1b3RlU2hpZnQgKyAyNSArIDMwICogaiwgMTc1ICsgNzUgKiBpLCAyNSwgMjUpOwogICAgICAgICAgfWVsc2UgaWYgKGNsaWNrZWRCb3ggPT0gYWxwaGEuaW5kZXhPZihlbmNvZGUodG9EcmF3W2ldW2pdKSkpewogICAgICAgICAgCWcuZmlsbFN0eWxlID0gIiNDQ0ZGQ0MiCiAgICAgICAgICAgIGcuZmlsbFJlY3QocXVvdGVTaGlmdCArIDI1ICsgMzAgKiBqLCAxNzUgKyA3NSAqIGksIDI1LCAyNSk7CiAgICAgICAgICB9CiAgICAgICAgICBnLmJlZ2luUGF0aCgpOwogICAgICAgICAgZy5tb3ZlVG8ocXVvdGVTaGlmdCArIDI1ICsgMzAgKiBqLCAyMDAgKyA3NSAqIGkpOwogICAgICAgICAgZy5saW5lVG8ocXVvdGVTaGlmdCArIDUwICsgMzAgKiBqLCAyMDAgKyA3NSAqIGkpOwogICAgICAgICAgZy5zdHJva2UoKTsKICAgICAgICAgIGcuY2xvc2VQYXRoKCkKICAgICAgICAgIGcuZmlsbFN0eWxlID0gIiMwMDAwMDAiOwogICAgICAgICAgZy5mb250ID0gJ2JvbGQgMjBweCBzZXJpZic7CiAgICAJCQl2YXIgbGVuZ3RoID0gZy5tZWFzdXJlVGV4dChtYXBwaW5nW2VuY29kZSh0b0RyYXdbaV1bal0pXSkud2lkdGg7CiAgICAgICAgICBnLmZpbGxUZXh0KG1hcHBpbmdbZW5jb2RlKHRvRHJhd1tpXVtqXSldLCBxdW90ZVNoaWZ0ICsgMzcuNS1sZW5ndGgvMiArIDMwICogaiwgMTk1ICsgNzUgKiBpKTsKICAgICAgICAgIGcuZmlsbFN0eWxlID0gIiNBQTIyQUEiOwogICAgICAgICAgZy5mb250ID0gJ2JvbGQgMTVweCBzZXJpZic7CiAgICAgICAgICBsZW5ndGggPSBnLm1lYXN1cmVUZXh0KGVuY29kZSh0b0RyYXdbaV1bal0pKS53aWR0aDsKICAgICAgICAgIGcuZmlsbFRleHQoZW5jb2RlKHRvRHJhd1tpXVtqXSksIHF1b3RlU2hpZnQgKyAzNy41LWxlbmd0aC8yICsgMzAgKiBqLCAyMjUgKyA3NSAqIGkpOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBnLmZvbnQgPSAnYm9sZCAyMHB4IHNlcmlmJzsKICAgICAgICBnLmZpbGxTdHlsZSA9ICIjMDAwMDAwIjsKICAgICAgICB2YXIgbGVuZ3RoID0gZy5tZWFzdXJlVGV4dCh0b0RyYXdbaV1bal0pLndpZHRoOwogICAgICAgIGcuZmlsbFRleHQodG9EcmF3W2ldW2pdLCBxdW90ZVNoaWZ0ICsgMzcuNS1sZW5ndGgvMiArIDMwICogaiwgMTk1ICsgNzUgKiBpKTsKICAgICAgfQogICAgfQogIH0KfQ==\";\nlet jsCode = atob(base64Code); \/\/ Decode Base64 to JavaScript\n    let script = document.createElement(\"script\");\n    script.textContent = jsCode;\n    document.body.appendChild(script);\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>To choose a letter, click on or above any purple letter and type what letter you think it represents. To clear a letter or choose a new one, click again. There is no indication of correct vs. incorrect letters, but if you finish it correctly you will be notified. The currently selected letter will highlight [&hellip;]<\/p>\n","protected":false},"author":5113,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2771","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/pages\/2771","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/users\/5113"}],"replies":[{"embeddable":true,"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/comments?post=2771"}],"version-history":[{"count":4,"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/pages\/2771\/revisions"}],"predecessor-version":[{"id":3461,"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/pages\/2771\/revisions\/3461"}],"wp:attachment":[{"href":"https:\/\/home.lps.org\/aholdor\/wp-json\/wp\/v2\/media?parent=2771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}