import http from 'node:http';
/**
 * Codex OAuth success page logo - Celtic knot hand design
 * Green (#6a9955) on black, symbolizing "Open"AI authentication
 */
const CODEX_HAND_BASE64 = 'iVBORw0KGgoAAAANSUhEUgAAAIUAAADICAIAAABJfrXZAAAABGdBTUEAALGPC/xhBQAAACBjSFJN' +
    'AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAUGVYSWZNTQAqAAAACAACARIA' +
    'AwAAAAEAAQAAh2kABAAAAAEAAAAmAAAAAAADoAEAAwAAAAEAAQAAoAIABAAAAAEAAACFoAMABAAA' +
    'AAEAAADIAAAAAMZ+1W0AAAI0aVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHht' +
    'bG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6' +
    'UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z' +
    'IyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5z' +
    'OmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp0' +
    'aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVs' +
    'WURpbWVuc2lvbj4xNTM2PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4' +
    'ZWxYRGltZW5zaW9uPjEwMjQ8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpD' +
    'b2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+' +
    'MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJE' +
    'Rj4KPC94OnhtcG1ldGE+CgKzuF8AAEAASURBVHgB7Z3Xc2T3ld875xzQyJiEycMhh0EkxaBIiqK0' +
    'orRaSeuyX/bJVX7wX+Lys+2yq7yWN8iSVqu8kigxx2EYTs7IQAMd0Tlef869g0aj0QBBoIG5rEKL' +
    'wty+feM5v98J3xN+BsP+Z58C+xTYp8A+BfYpsE+BfQrsU2CfAvsU2KfAPgX2KbBPgX0K7FNgnwL7' +
    'FNinwNYoYNzaYfo6yua0evoc7qjDGbHZvRaTxWg0mZq1ZiVfK6equXi5sFiuFGr6euitPc3niR92' +
    'rzV61N932hc64HaEbCabUTEoRsVo4H/qeyhNg0FRGjVDJVtN3y3GL2aXbmQruc8TYz4f/GAqjDwS' +
    'HjgXdMdsRrMRojcbitFoVBQ4YjCa2DTAjKbCIGQ/7DEZzAalpuTmynMfpGc/SpVSla0N0Pt8lN75' +
    'YbaZDjzZN/Z01DNgV5rNZkPoJbPBbIAL8MLAnGjCH7giO9mhNJVmXfYYTAaTiUON+dnS3VeX5i+k' +
    'a6X6fab3p91e1/xw+G1HvtI/9mzEyGCHvox9E5rCVC3U83OV7Ewxt1AqpWq1Qp1fzQ6jM2D3DjoC' +
    'Y27PoMPuMTeFTwg0g9FibFSUuQ8zV385Xc3rmiV65YfR4I05j31rMHY2oIoh4QSiaXm2Mv9heuFi' +
    'upCoNOvCovUfk9nkidpjZ4JDD4dkViHVGgpzxWwyzbydvvb7mVKquv4snezRJT+MhsCQ++T3R8JH' +
    '3c0aKsJgNhsLi9XJNxKzHyTL2a1S0xmwDT0cHn0y4oraRNOo15n7OHv1lzMYYDphQMdjIHF19/EN' +
    'Ok/99WjkmDBDxotiiF9avvKzmbmP0/WKqkC29sj1ciN1N5++W7B5xD4WnW80BsdcrpAjN1vCON7a' +
    'Zfb0KN3xwxW2H39xKPqAD52sTd7J1xM3fjuHqtgeYcrLtcxkAa3jHXI1Sgp2cG6uhO5BCcFpvX30' +
    'Ja9sHsvBp2Pj3+xXDVmMWmPiau6Tf5rYuQ9hc1sRX+VMrVKsms1mu89mc5vMDjxJg6Gh1EvNSrlW' +
    'z9drtcb9ZZLl/gwQowEf2x2xe2JOZ9juClirhcbk20ueqG3smYj4dzgTTUPyev7S/5vaOTN4Rwwt' +
    'q8M0/Fx/YNiFVw/jjVYRYEgwRITSNNZr9WquiZuSniwmby6nJwr3xTjeU35gIzn9tugxfGx/YNRl' +
    '91ssdlw3Yzlfn3wlYTAqY8/0OfyWerXJzuxk6dqvZxrVBvZSs9HdlPrUwWSymPyDzsFz4dgZnzNq' +
    'M+FLQn10O9MAd0bzKU34+E2L3WSxmz391r4z/kalr7hUnf84M3s+tRwvinm2V589kldATP4hz4En' +
    'I9HTfkfAAukVoYh41/hrqNxP/nHKP+I6++9HcevwwCHHlZ/O1KuNB/72wPJMcfajTBLk47NoYDzB' +
    'wKhn7KlI7EzA7jM3cFFgKnavBT9SqMuduRdOZLOpThR5JvV5+FVRON1oNpWztbnz6YnXF/NLZWbY' +
    'HjBlL+aHO+w4+KW+4S+Ewf5wGho1BrvC21qsOAXGWqGZul3A9R44F0CGqNK8Mf9hJjNXOP7NYU/M' +
    '5u6zxc76crPl2ffTcx+niltAPrgjZu7oExFbwKzUFZlwyECTySzmi/iG1Vwdfc5NrXaz0WIyo0cs' +
    'RovNZLKbGDri4cO8asPiNB78SjR21n/nT4sz7yeqxV33JXd3fpitJqTT8W8PeoccIE5CDP5YMHaU' +
    'Wl7Jx8vLsyWG/+K1rLvPfvY/HLB5zEiS5enSRz+ecPisD//dYZvf1KwyMo0ms6iV5bny1OsJuLLR' +
    'XEHQRY/7x58bCB5y4Z4z0gXKsoivXk7VkjfyiRvLmaliZbnarBka9aa8v9FgshrNcMVp9kYdoSOe' +
    'yDGff8RhsiIn5QpwCwUz817q+m/mCsnddVx2kR9Wp3nk0Qg+tsVtauBJ8NoWk1I3pG8XZj9MLV3N' +
    'FtMVTQigXQ892z/+YgzMvF5RZt5KXf7XKaffPvBQcPBsMHDQZYAidWgD1ZhAhqWruVsvLyRv5Tpk' +
    'CApg+NHwka/3OyNWhD5sNJkMjaqSupmfPZ+GE+Xle74kLsiJ7wyh2JtlLODc3TeWyplVN9NsMwfH' +
    '3Eyv2AN+s0P0PcMIniWu5i//fCYzk989G2y3/A+ryzL6ePTkd4fMdhMyihkB8Je6Vbjys+nrv59L' +
    'T+TEelkRyI6AbfTxiDtmNzSN1Vxt8o1kfrGEN5eeyMO5cqpud5mdQRQulxLkw9PvCB/xwt/iUqVR' +
    'vafqMWcPf6X/8NdiWASC/lpEO6RvFq7+YhbmZaYL7b4kcy72QCB81OsZsPmH3ek7hWKywnTSPvAS' +
    'qbhwIZOZKLr8NmeI6SNv4YnZff3O5ZlyObfKvHvn9OifXeEHCnnoofDJ7w2jDxSYYTGD4t3+t8Ur' +
    'v5jOzhU7BjUvgvOMuLc6TUyiQrwCLtKyNSFNdqaw8EkmH686fDZn0MZoRTnb3ObIUa87ZC8kqpXl' +
    'GqGR8ecHD365DzMJZsC5Wq5x55Wla7+aSU8VNFHZTjFUtzvk8I26LFaz2WJADC7PlZid7cewDZMW' +
    'Ly8j7rwDdtXMU9wxh8tvx8EUd3IXPrvAD6PBE3Y+8KMxux9loKCxC/Hy5Z/OTL2z1BUBRH8GRzxD' +
    'jwVFkdYVzNyZ95MdPMMEWJ4tLl7JNkoMUifMkBlgNPiGXYFhdyVX5xbMNm+/0xFgLBsAu278Zn7i' +
    '9fgmGtjqsESPeS1O9Lmhlmum7jBlu4Ax3Dp5MwfE7x92IscANz39dqRu8k5uN+zg3vMDtXHshaHo' +
    'Ka8KeCiFhdrVn8/GL2c2Gky8JMIH6UFQiVPAM4Bvux4seNSdfHa66PDZ3VE7qptwiDNojZ7woWzg' +
    '1tL1ZSB34Pdr/zo7dyG1Ob2YQ32n/HaPRRjbMMSvbBhJZHBgkcM/35ATIw2p5h9yJa7nsIZbIrfr' +
    'A29jZ4/5gaSKHPadeGkIgQC9Spnard8tQJpNnszqtPQd90eOecQKrijJm/nEzeUNj1dEhqRu51FI' +
    'UAf7DcMUQyh00B0+7MUmnnhjaea9ZHa2uOEVVn/AEvM6I3bxR4wG5FIpvaFW4HWyUyWXBO3tgM0W' +
    'h9nusmIWtrTX6lV3toU/1MuP1WE++EzU7MCpMzQqzcVPsrMfJje/AWIK5S++GCgJzskWQnhEn6D7' +
    'lX+ZLSaqJis+NxNF8Q4jJEdHHw+vaOXNb2tolBuANMwhvBCMDrvHigmwyTnVUu3OH+P5BbF367VG' +
    '9JQvdNCrOfybnPVZf+olP5gQ3n5X+IS3ASpHlHSxMvVmYr0u7XhEzjLbwau0sKtR9RY7Dln9anNZ' +
    'Dn9p4Iv/+diZH43hvlz48WTyag5fGroojabZZTr8fOzUS8OePufqORts4XzUininmllstLpxizbj' +
    'B5fJzhbiF7KAj5LPYjMOPRJiomxw+W3u7iU/iHXHTvp4RMZ6o9RYvJzNzm9BbohfIrE/PswScJSN' +
    'Pqjrk98dPvZXA86oNTzuPvriIIj8x/934vafFqvFBqJSACmTMvRYiMOI2m50nZX9Sr2MIy7qA6PD' +
    'CpKmolsrv3b/d+4jCU3KgzYUzGUiykiCHn56yg+rOXTUy/znCUvp2uLF7JYfFHWgvhaiZ4MBFzzg' +
    'Of29kZEnwmKGNcGXDESWMASwpK/+Zuaj/303eYMgB7Q1NRrNyCnvqe+Pxk6JjbDJMyD9VVDLaLIY' +
    'zE4c9M0O1q4DkIWzAgADR5wBa+CAB8d+k1t81p96dy2jweknDGcXS1SmdhEsZEtPA8qHqIEWABs2' +
    'I4GK9WdB95PfGcZmE+Ei88mUWyhf+fksSB+YI35D/FLm4/8zcfflRdwCBCAYYWDMiVkx9GgYnb/+' +
    'gtoe7G8YJmlDDYMZ+P3T2cF5CjZevchDM6OV4KhbJnfvPj3DExmbjqAdY1cQn6Z4AI3GxqKn7QVQ' +
    '4ItXl4FMlJoRdL2c7DRymBnjzw8Ej7jrNXB4jFwD7uHNPyykJwtQpHWlYqp87bdzDIIjz/d7BxyM' +
    'X5xE34AzecNaylRgEraGM2SzezCoDPV6c3muiFrmUSEnkxKzWxi5hQ96q47REbDwpu4+h075gfB1' +
    '+K2M3Ea9QSipiJDd2gcvbOa9xPxHaXWgNgURaftgeh14pi98TBWDOCg1Zebt5O0/L3RFeWEnviRm' +
    '64Gn+yrEVF5fBLAKjHkOPttHSqMr4rBiEFmMqAzGzMV/nFKFJLcTPjCNeHi711YrAaKteYa2x5HN' +
    'ar5WLTY11J4Qjgoa98xX79n8YJgBeCBzeBWE8uZBPV6edJ7gAbdvyA1YgidvtvFinEjotFHK1gqL' +
    'Jez9+LWst98RPeljHjB4QQanYcbL8VJ6Q2YzZhO3lpk6rqAtdjow/EjQM4ITB8H5RaiJWYWkAfzg' +
    'GUSBi5DCuBOtZbFbTrzUj+Ebv5gheQ6Wi3hc90Hr1CtyFcJYFpsZnHHdIdvf0TN+8FC8Hm8nGxs8' +
    'DwoTtGPoXCh2xg8bMBkFf0faE5uSQStn2kNm97A9ctwdv5gDBBx9MgoIj4IB8SYocveVxfXMwMjB' +
    'N6xXmiQqaO4LNxo4Fxp/vp8ABvtFTzCesVKtBgsxEG6LPQCLEFYwB+CRTQkHKBab0X/QSWrL4a/3' +
    'L1xIT76ZWJ7tAn/xoDytmBXC0I1edwMqbLq7Z/yQtyFLUxtPRHfsa+wkREFg5B6CzRznWCAgjUzq' +
    'KRBF5Y36nkwGbMqptxIkTfed9GJZAq8uXV6eeGOxkFgbfjAa+k8Hjnx9wDfoAGScOZ+68/IC8qpW' +
    'rt99NV4v1g99tc/VZ+exuB04SmGpSjIcIBj3y8wUSSwSUEACt6ZasSqsYUg10S7glcYDz0YZOtPv' +
    'pe6+Fme+3ns1VbIxt5gfWFaI5s1RmU2J3+XHnvGDSV8rS0CU50byAHrfuxvwYsR56MuxoUeD+GvA' +
    'vVj9DEvELm4gpOcUJACiv1klNV3BiWGQZmfKuYXioS/FLC74qhQXqwQwwIuYCqC5K2xHQlqChzzZ' +
    '6cJHP77rH3GOPBbFxoVt3JqJchf+JStjT0ZBCuY/SSPEyplVUJ1j4Ic6bdTBbjAx3tFPDB3UOxvg' +
    '80aH4eCXw32nfHf/Ep85n9QwXVSahfPUqYGbtbkD24Xkm+5aodqmB23lR16GTCfVgpRR5go7OAvf' +
    'cOB0EJ9Z4oM1hagDsgK4CVCuutxYulsgpkQqFJG7KhZL04DrAC1sTgvDzuoyhQ55ID1nJK4uEy86' +
    '8a0RdOntlxda4QcsCKvdsjxflHzDpiEyXkG4QVAeg7vzSOCYm0CZ2nup3JVhUS3UPvnHydjp4PCj' +
    'Qf+Yy4ihjP/eUFxR65kfjkSP+1T7rYgnj6lmFp0kbhZwi3adnvztKT8yCIomaTVMEkfQAtR68Ono' +
    'oa/FoCgOFJAWpmGzbiBaRw7u4tWsOLoGxRWyH/5yv2/IxfvMfZi++8YCMAYKwD8cIIjLSwMgEsPA' +
    '75t8ayk3X2wHuIBPcOU0UI/h3CiDLZpFmKyk9rJNciKMwb7g73qScX3JcOGJUVGKgikx8WZ8+v1E' +
    '37h39Ok+AEf8EvYzPvof8nsHndd+NRe/nMbaPvP9EavXkl8sb26Mrb/j5nt6xw/FgDwpJ2uWYTuG' +
    'ByOXyVGryHhHrzCcGL/J64WJV+OL15eRTq3HsrrNsVN+76i9mmugwLX9ZlJvYg6rC+hFKS1VJdI+' +
    'X0RQDD0U6n8wmJsrTr2TIGPRAnBpQmPL1bgLdgHm7D2HwAgq7j70pb7IMT8mOEga7ITTrfuyoSp5' +
    'MSLkdLi1wi8eb/5yZvFGbuB04PA3xJuRy1cNroj1zI9GHL+1TL6TYLqf+uvh7FSxxfv2K297u2f8' +
    '4AkatToy2j/mQA0QF3JHbERyymlSBCzFxdqdP8dxDtC0Hc+KPkRY1as2LJwWYsG4doUoveGahsJS' +
    'CRWNDBx+JIyjvnQ14xt1H3g6eutPcUQfp5MvwjUZwpDG4mDGiO1kd1uHHwuR1P7B/7wVOOgmyQFb' +
    'YP7jNZEVDCvRXwA8hGOrovnaP6CiMx8l09OFI8/1k/uCNcwTYtOf+O6wxWm5+cc5TAOuqRpm7eft' +
    'aHtDLGEbV4UNKXIM5K0UpET0lB/bFEdv6WL+/P+4fff1+HpmyKHYM5KPIyYWypwPO5ESNh9J6Qal' +
    '2iTJk3GNUrH7LKmJ/J1XF5euZE02C+mNcjr/V/9AFzhi9ZjJKmKXjb9GI5mGnEI0CSmHR6JNBTlD' +
    '/TCTuCubqACo31WgQfFLP5m6/qv5arYqgg0NaFSOvtA/9mQfiQ2SILGWi/cuvd1/ejk/wJHIQCCg' +
    '7QpbsZ2IhpIScO3XswztdqHf8agMauIQ7GRyQHHJfyjJMPf02SAQmEtJzATFgs+IYqhJSK5WbKBN' +
    'BWLB6IRIqmqV6+Tq1kMWYuyZqQJuHbOHkCJX5ngJubMHDLjN9yYwzqSAntxGIMJuCobTcSGxnsmd' +
    'YGb4B+2ae0+qBmbZxJuLmvbqeKltf+3Z/CCRYOTRKMYfsK5IDEXBexh7UpJxN2GGvG1NqWQAWmXc' +
    '2XwWQCd8l8ABN9CQ8KPa0Axc+ARfYTkErEFloxhvjFaT3Uhi4/C5MIYcqqBZgZfi+mAFgVFqqoW/' +
    'mHYYx7jl7ZTigvzHLq4DWTvkVfuRbMevZD75h8n0lDhAsJDTjn9naPjRCKOk48idfO3NtZj40WOB' +
    'Mz8YQkxPv5PEFoK6DMbQIffgg6HNnw+KSzYmw5Yh7zZjwziCtqFzQaPgvMYmCGNaCjXgN/RiFLMN' +
    'pgK/cU0Y7GSfHngqcvBLMT8Bj4aQVQjMbBOAScSLdrzYV0YxLto/QB1IK5kfdYNwboP5oZ0C4Jid' +
    'KiC7spNFzkFdYdqd/v5I7JRkYrRfdifbveEHMBxKz+QwjT4VwUUgsZNXRU8ySIceDWH4bvKI4Bn5' +
    'hZKILBAwtyV00COElICvyJJSsqZBh1hcqBasGi7FjCFxhKQsPGRSdS79bOaN/3r12m9mJPdZdI9Q' +
    'nSugfTQRBJPIQQH+WvsYgAjMOZl2jYomr9b+vvbbwaf6HvuPR3msq7+Yyc2X2UBjYeCd/eEo+TGa' +
    'zFx7xna+9YAfKGEmQfCgiygCONLYM9GJ1xYraZkiwIv+MSdJzZs8GiSjBK2wWIEu0DcwBpnN+aUq' +
    '1E/dLN7+y6Imc7gYKlfTBzBDTScEjzIqVbWaVpU1MslUrFDD0fCiyQaiZB3RJ5NGEKzVgcy9cOuE' +
    'jooRDcFEVFVJ9yf1D7oHHg5GT7lP/c0oWP3tPy4wMrRHsgbMx18aJru1+5mfcW8P+EEJwegXw+Km' +
    '8mpQt2rAJsE/EOWJVJEczuDA2c2kFpMjfTePgEHxkAyI57HwUebCj6fe/283F6+sJApBahWO4YLo' +
    'asHIwXzFk1slsSSxi/F6b3JwnbGnI8BQvmE3kwbXpH0UM4zwb2QS4a4WmgRXNiIdpt3h52KkXaEd' +
    'g6POI18bSE/mp15Pkk0phnKtSXLMgS9GNb210UW2uH+n9hVvRUK/b8ih2Sf52crd18XkmH0/RfpF' +
    '+KhLUqRCdqBWRjSv0fFYNrclOOYFF8KxAmUyYAFh6fotMx8kOo5EVRB8DB4cBGjhYFHmOM4i2Va9' +
    'FnHNmpKmDt0ZDcvTxal3k4nryxzFrBXFu8o7A769CkPJlALpgbWhg75cvNjhM3LKwWdjfSd8sFMh' +
    'G7jW5IIEV278bg4/MXqSiAo+UJPrz1/MZqfzmxsFHS+1/utO54f4zA+HUG5cGpZMvpWo5CXARwIu' +
    'UGslKwnigKDeQfvJ7wzhMLc/AeDgsW8OPfx3BwZO+4vJMlgFEoBAiJoU2n6gbCO16jWF2PXFn07d' +
    '+vN8PlES+jYVCRquaGlCW7g4ZBuRdQhdsNzuWbd48XxszI/VyzrDNh5eQlJGoyTvNg3Hvz1w9PlB' +
    'kIXVgwyGoQfDw4+H5IKA1mbT3AeZhUtpDIpapX7lFzPFVA2HlHuRgjzyWHjnU6TtAdufYmvbSHz/' +
    'oOteLYGi5BfE+9NOhRBkVN75S1xeV/0ED3se+NFI6LBXG6TYtaBbB56JoAPc4N5No6Q21ZX4pezU' +
    'm0u8WIRWJSf8kqKpfhiYtVytmKxWcgDjRLxJC2a0S4qppsA5iqGNJ48TQ1Eo9IX69ywfzCEV0WqX' +
    'V1KgJcmJsFpBPyMGEV/g84e+0m9fUQbRI/7xF/pJgeSGWFOpu8W7r8Rb5etAOJOvJQRO5HFqDUrl' +
    'yTBun4Lak3+mvzviByM0dMSLlSJGY9OweAkAaxUOQQoBkMy8m7ZAOBmGTbwKZgnFMoipsSei5KKr' +
    '8SAJX2P1EvpO3ipc/vk0KQrHvzV87FsDx741NP71fo2IMFhIzGXUN65XJWLIJtg+BQnRkwH4R5sT' +
    'TC+0iitsQ6zjuGn8gJoVejjUQbfuvS/gh59UBHlyA8IHA88VtePbo/5IygaYgTeBEQ8ZEYhiGVFm' +
    'YyVTv/m7eXjQTt/pdxMFhhGPRYJ2xBo86G3dov2wrW/viB+8bWBUzTwDrC41qHbpuDGj9daf5hav' +
    '5K3ENc0mnIDZ99JYR5RWjH8zhjiuq4Y/+gDtQjuem7+fx1z2DbhtXvMH//02X8PHfAx2LgszYDqU' +
    '0QYgEoMhLzpeUUKHPaQlkjKKx4erKPYYviVomMyPey+ISySqfsVRQB8wP6Ayr5CZKPFgoCyQkslK' +
    '0mlmKu8KOIALMQ7RUQwXrDgStIkE3xOAK++JcI5fXkZHaoMmNO7mCis/buffHelzYg/OMIE58ZmJ' +
    'BHRtegA0e+Xn04iO0GH33PnMzAfJgYcC49/oJwWNKYV5tHQlN/HaEiZA6m6ONxC54TSBnMM2lFBx' +
    'seIdcBZwGNFCki2PiBLGMPlQD4h1oluTry2htzSJpIZMBHrB9EVwDZ4LYE0UiY7ASDxFNcMKMxd8' +
    '0OrlC/6/gWg5+nzyzSVEqHfIeeM3cwQWsWtBIXkvGfoNI9qboizN2u4gM2l/I0+GTF4x1dDwCE8K' +
    'rzqO2frX7fODBwVBooqbm6Esqxk1prT+zoqBmo9P/mmy70QAyAF6kVco6lFVg4lruav/OquZANqp' +
    'jFnULO+GkmRQE/CQSLuZtBVUtwTjVMVghB9MDW/MxdBGoGvM4ArwjIAro5WZwQHwDDNaHb+QFvKK' +
    '3WFxWewobQhtMiWvLVMfxWhgP1AbMs4bcZz5wVjoqIcDRPEZjLf+GMd8547aE3b8zc2XcFpBFnhm' +
    'PF/Mtp2AjNvnBypBwmSA4mR+NCTgI+N2gw9xm/zign/YdfzbQ+6gDeIiezB/aSXSkZ+AvQsQUs5L' +
    'UJbxmItXwkc86BtyVviPuTL2RB+n5+eLhFui/U6Lw0hkd/W2Yr7KFCJ1AViXgmVsJ36NHPWJLlEf' +
    '0BOVyAqMJ7Jy589L2gEcA1PdEefpH4yGj3q0N+Ep7/xp4c6rcfXtVm/SvkWwoJLlaaUfBw8jPibS' +
    'UmV8+2Fb3N6+/uCdqUwVh4h7ryBLm9wVK5bycv+oAwuVkYtwu/nbBQZXxyki08GD1cARoxVlIINU' +
    'vD+Dw2shRQg1sHg5Bdadj5e4uyvqFJt15SN04P/IfAtTUHLstV+4rBhjKpmRYLh4+IDXfz2fuoP0' +
    '14hvcDMzfjgSPuaWOcXhiuH2vy3c+nMcG2Hl8l3/VWol1cZiBlLCa1vj5XQ9YZOd2+eHvAQyR7JD' +
    'hRyaQtvoTtivfSf9BIhQNhwJuSdeWWJc9z8Q6sBcRW+rWgTbceBseOQJtfmVSBqlUmzMfZCaJa9A' +
    '5ZZAUjX0sFQoq1NCThQZVRcPkfA7z8XtZC8/ixq4B2fZXGZAM+Rk/FJKk1TaAb4BV2W5TugMviHi' +
    'UOC3X1kc/UKU2rvNHQt0m2r7CV6gclK95bb+7EBeEYeoqDEckbEG5umGD0BhWb8TO1Ji0Q1xGxcu' +
    'LlPORN8YyqKu/dJMJLV1LnYq+Hz4sC9ytEoZEtYkqSo4BPl4vUkcEP3KbFD1JUxFpqtOBmSQWSEf' +
    '+MYQsUhoSybiytjnCWEVQ54jmRDElxavZeBK676cPn8xxX+AMWTDEMWhTAsM8cjzMapMSEZV01Nb' +
    'h6/ZQFcxHbG84W69Dva85tfP9GX7/ODFoUi9SIaOvCQaEq0uKNa6D2/YfzaI6EcBQBQqAaffSg4+' +
    'HKQwAGoe+mqMCCCqXjsPncH7D56zUA09cz6BlDv81QFCgZwFcVHFuDs4XxxMPhXuMcQFZIVJGukh' +
    'K/8DMgEPJgzVkkXMGMkIEUoZYX+TaOBaqnkiDhB7zFmM2qu/muG48a8PHvgys9PoHXaAvxVTuKJd' +
    'BBeTguEiKsMguXeIQSijvcs2/m5fXvFuyA01VVlekkIuKo67PgEORP8DfjH/8YXLzaVLOSwQTCMJ' +
    'BTYVV8Q2/gIJbZJfwgcKYt1iPZM/x1cgEAadmEM4bsUaTrLVc28MQTtYwvH48JohK+eLwJBmC0yU' +
    '9hAsUpGRAqX44Hu2U4yfyPd99D8dOf6dwbP/bpSQhubx3JPAeLoNpf+sX9spt1j7cXit5DlwX66M' +
    'icFD7mR+7IAfqkGSnRbTnrwpzHlS09Y+qnwj4z140OOk/FJN0ccdAVPBpiInOnEtLy0zFAV0i/zM' +
    'lsRj2tG0QS3Eh38N4h9YRBTjYNcipltc5/1hCfKrHbglkoHc8Aw4yBVCb3N3uCNZxXKwzM6OJ4To' +
    '3JoWArPvpN78L9fP/687VDTzIkAP0+8skZYnqT6NJrXxkXEI30WcECBQ8ZUmfAXyaVneHTfa4teN' +
    'hf6WLiCVjTQxEH0qMtzYkcDBNRhW4KOefklOYDhPvJpEcLMf0U9EOnTAa6e9jEHwOFQLFirbgroH' +
    'bJCSbDm+gjL1PxQgczkzWQRCZw+yi798ILqX/klBOxgMEAhOexmRohhdNA8wGwmYBw94vQMuHs9k' +
    'M5HyQn0/E047V/tLgcjYFyN3X8GjXOKRiGqQhU2PTPwecBSr00piHC4qUstiMSVu5ST0ufYD/O4H' +
    'pIDtJuPkq4n0VH5Vaa09civfujB8K6dpxzAWqIwnuxCZg24IH/NEyMdpq47lEaEUmZw8IkObxiQt' +
    'hjFUSX649LPpMz8YcfZBfQPWF8DJ0vUsox4ZRYQHZgteOeAB7/MA68n8E59chA8z0kmOltPpRdVX' +
    'EHH5eBH5yY0ImWhRE5kZxELwA5vN8FEfw0W1elffj94qNLqZeis1+35C871RcjwzGUaaql/4OD14' +
    'lr4PFhIVqRf19oEUrOmj6Yu5oke9nIJlhReSuJ3DY129wWff2pG84nagrYuXltGVzBBwDsIAEKv1' +
    'GIggSvYBo6A+L0wfn3ZXHLmcuJm99NMZ/DISpWAqfXbBoHglumYwY4JjHozXidfmr/7L9PJMIXzY' +
    'Qw0HLw+dCYINPhA2NIwX/3nq47+/M/nWYi5e6pAVyCg1SU4cJAAYYKh2cAl2UlmSnyvFL9KX996k' +
    'obYB7ESF30WylbKVxI0cORIgEIIwHvTwt/V2bOBRMb+5D/APR5IfvBPlwQVXadd+m61vM47EIVAN' +
    'D54qesyDBGidLu8w5lYpaGSmU+nV+knbYCosXc9c/Ml0caGCReQ/4Ox/IAjz8M9x5Ug3AdqDPUwX' +
    'GrbBB+rDqK9hFDMVZj5M3Pzj7NK1rOaOdFy54yuYMSYvkoe/2odwGbHIhYvZVsNSeEz73iRkpdB/' +
    '5ZO4mcPRkSGgKEx0uLjyiyE67sdKhIQYlvB7+p3uAFfr+K1s7JQf0G55objwYUb8Uvw4h2X8uVgr' +
    '7kSDQnfUStQIYQWCS6f79c8ESxLXs5d+Mp2bKYHo0WwK55lMquWFQhSQQ0UAOSs/X4am8Gbpcpqs' +
    'dWHSxpJByLf2A0fRK4BLDA7tl+ARDwEbkHYeQNtDw0tMNZJdMApaZ5ObioySAHvTQDtBu/tehMPu' +
    'tR97cdDq5E4SxifATJMcZnzrxO1t7JQf3JXJDsJDSQB+MrY/Yuf0D4cZawhrJx1g/JIIitghlEQC' +
    'edenFMF1e/nyz2ZI/wXjIkyCakWXuCJ2mu/IKRQtxBzlRO3yz6an3yPlpFOpti6LtGTgawZSaycb' +
    '8IP/8F00cAW643AAoDH2W4cRGVTAZimCbqMq8BT8QH9wGPipWqAm3t+p7w4HD7tktpkMvPvNPy1s' +
    'ZZq27rXRRg/4gcTMLZav/WoWYa2NPlAmmvvACYfPTJMvHpppVMt3MTdbj4UeTt5avviTqXK6Sjsw' +
    'jif7Ha84KiFCmpoF3VHn/KW0hsm3zurYwEgdOBsgBIn87Jg9fCWDBGmjqXQ2yOPmyUX0t38YUes+' +
    '+KeS94UBhZHmsyH0jnwtNnDOz6lydNPAuwOm7VBzaLfdkX3VenJADgpeAMalVasUhxuJ2flH3Mgr' +
    'BA7DH5mw0eRYvQiz5MYyaj/2QBATFuM4N49B7Cb9JzdXSE/IT62D12/gHAw8GAQLIFDRisQwPugD' +
    'wxCW7hilBm1eBUcpNzgMfhx+ro/5N/dhKnmblHsKhaSpAC6njPo2vqBOJHdLMomMFMChEYe+QBm8' +
    '8JJ2Tbd+Nz93Id3B/vWPt8U9veEHN+NlSDOwea2ExAVfUxPXzIhXmdGiDSl/+tRngpek3uL3QUfE' +
    'IH5G7CRKljKLThi4/VJc3d3nBK/EuKCrkwbHcgWSwQaBAp1mIo/JW+jtGs4EM4MDcBhrBep6UwQu' +
    'ycfARph+d0naNVAQJE+85sNIEl8SHQhH7GZST0Wm0cHfap5+PXnjj/ObD5Q11/q0Lz3jBzcCL2IB' +
    'AUh/4Et9fMVFIAIqCQOqZ65N7k97HpFsEs9RP3TDLWWrkHUjfjAnwBw9/S7ohaFFlEXzxQikDz8S' +
    'ckUdVP0Qv9P0DdCk85mo3W8j945EVozahU/SWl02lG3WG5ShAOsKcdeOHCa38EL9MCEYKEQBcD9J' +
    'Zrj8iyne+t5vvfinl/zgedDDl/5lGhO+/2wARgjcvSKgmd28Nh5Jq9rsU58fZbs8VYCsKIZ2gcDY' +
    'p6qKhATyVOlMSUUIAIxm2/ATKmfoXBgwn2CXmsYovjN3x2es5RvotkqmRuckElkQidozgHQhi2g5' +
    'gMXFK7Q/GLMFESdaR4sySZok80Mht4HGgz2cGdpNe8wPLsoj3vjDPLkNUgzIW7BLTSIku4Bi8pPf' +
    'HclOl+Y+TJJNQtlS+5uv3+ZSFEH1naaBro0ELZUNNt+whzZ95C3gmsQvpcWQXflAuIEHQzTCmj2f' +
    'YLrISMAwi9LXzYRGwVwGOqPUGlCEiVukzUIb3o6v7utz3vhoXgNxGf64n0OPhMkgwQoXs1tUP28j' +
    'Pua138ySaNLhfq48xY7+7T0/eBzU+9LNLEHWyDGvqhxlwQiL0wo0h/g+8jzr3YSXpwQ7WbhEFeGG' +
    'ugHZxRRhVsFIwcNH3IxTCsKnzy/hoAh92j6o6OHHww6v7e6rCzRD5BdmFbyk6wtTAVt84ESIHFzg' +
    'P2K3FIh2tDiOHPdhJcJ++Df4cDh20usZIgRrlIiIzwKAzwVlxqNK6o0CKOrufHaFH9qjIsqZ17wE' +
    's4TxhVpmQNEYCb1iMiuBcVdo3EVWfPxqbu58Eiyra5kI78/p9B0Bapx6V9rFwKT1pECRDH8hQo2a' +
    '1KgvCbGwSoefCJNPPfV2AiySggSG+dLVZTotghjOfsCKUquNUmwuKwguiaAog9PfGxx8NMRs5kai' +
    'KqRCFQuN+cF/4mxpgnH9M/Rkzy7yg+emazGwB3lWwOIsIETiDKU3ZosXQcUcgq5Wn3n0ieDgw37c' +
    'bxQv6AVIOwxrvRu6VLLlKk26jLZ2dmwAO448RntS8+Sb9xoGMBugaXjcN/N2gkxtd9hOz9JigixP' +
    'riz9qakyycwUWoFxol4oNpqUwzPwdvBHKbymcpds0Ao1cITFGVZY7QaZlyv+fMdj9OTr7vKD5Dap' +
    'gHZTE04A0cb8IKeGvnFAufSyxeKSjAXV9fXhPo44McyAjzBD6ZYsaW3iBsAPASRUadFlZkApegBQ' +
    'miapgivdG7B96duweEWiwgxzRFMbsRSKz0a+EGWBBVEV6iVxvHk2voICgH7ivQMoYIaRrVvNN0A2' +
    'ydomW4HJIb7ISky+7Zo929xFfoj0z9fJEMBLbxhMoBEEiMjnuPFvs5TdDZwJ0O+OnDMtSqjOCWIM' +
    'RqIp9AulMJeub4kbWYYnQ1I8GFGoXV47ctxPsIT+V5qY4gjc0v4zQUCO+Y9SXYUbgnHq7UUROysX' +
    'VPPqqCFsooRo9Lvw8TJdBAglcGRw1EO9lgDYRpkcTCnNpO7yKL3YtYv84PEwkDDwvVSkUxvoNlPo' +
    'Bz/Yz7xhtQ86UKCiBx8KxU77ZIknKI4ogExGA6EUmlCTtzj1xtLNP8yv99G0dwfswvAFNiZ8pO1h' +
    'ulDXC7Cx8E6ia7hbO0ybfNo2f6U0tIk8UqbeTaCB2i0F2rk7A4JCEnYkuNlVybWus/ONVfR459da' +
    'fwWAE+gVHvfwqoRsaONFW5jWmGWDBF+6ps5/kKF/GdqYTHKR1AxcouJ2krWB1l0o4RYk3n4LZH1o' +
    '3EcUiKLm1n487f4zgcxEfv5CpjX8W7923YDWI49HgA+YlAyU9mPQ8+SaqEEqdhtn3knRNlmrmWs/' +
    'rIfbu8sPZALoU+yUT3OpsHqXZ0AJO7tX4RnQE4ZWkUTjEetYU5IHLaqXVu1OOFpKVttjEtr7ExzE' +
    'KECqqFpa9iH38Rgo1ictcZPJ0UE+0q5GvxilLHh9qJXMKxpnazGocrZOWLeFjHVcpFdfd5cf2ggF' +
    'XPIM2tkGbEA5M95bU6T9NTCliEbQiy83V2GiOEJyCrARiIh/1IVrreYzrIh8taoTzAOWtC4SGHXT' +
    'cprlJGgYsMXJQSMPkrsxiIHxgZZbl2KDTo5HnouB1pCUhP+4cCE7fyGFSm8/pufbu8wPfENZY8NI' +
    'ZQ2DHVlE/AAbn57fG70JUwqnbOkKRWYmwF0yd1AqnIXQg53YPB2iv3UdFH6ExuFBG8xopeS2ft1o' +
    'g0yfwUdCE68uooQ6FDWt0Aj/yeTAsio2bv4xTsy4BWRtdMEd7t91fohXWGvSfolQqKQFOczumLOU' +
    'qLXMoa4vANEBeqvZOgkiLIRKKQ2pyn6WdfbaMJzWJ3lwEbwQ+o4DCOLHbMSzjnuFj/hYnmSBJto0' +
    'Vlk78KlBOfqNAbEyEIMW4+xHWZzWDmir42o9+brr/OApsbJA7qLHfJiVQFm4I6zsVMnWJYaz8QdB' +
    'lJ0tUXxPvI/5QTYQH5iKGCmsQ/34iUgR+h+TFLXcVR523Arjm4qb/GL19svzGuzYOgDxdezFAUoO' +
    'UHhoeyqjWABR2teuCsvWsT3e2At+8BpUNOPrwhIeH2uSYiTSywh7UgIrfsAGH8iK5ElPFGleD8qL' +
    'HOcDlo47IuH0teEpai/QH6VMFQ2/wfVWd0Ploy8MklNJoc36HHvWQKSG06bm0iFjb7+8uHAxgye0' +
    'ev6ube0JP1QtAmVxI6jqFFcb7N1lDh9y0e+dnL6NFoOStzZKN4bUnQIeIUEk7C4sguCIi9rcQrza' +
    'bp6SJOgf89TydQTdp5IrdiJAK4mJV5eISHaoDVJ1j3yjn+tzEXCB+Ce5W39a6JhAn3r9bR+wR/zg' +
    '+Rhf9P8UlqgZQAJeGyVVOXYyiOjXmiqtfw308+iTfXhh4k/UWYCFtks8s0K+L6ObREI8GO0s3BGY' +
    'TVKB9BfZ9EPU5MRLg/STnX4PPbYm2tF/OkiXGG39YcyH5dkyyx2RYrLp9Xr5497xg6cm3oBl1Sg2' +
    'yeilSlxy4WkB4DIDy9PJk1A2tEZPoDlQy9qHEoWRJ6K4iqmb0v6VGkDMXwmaNpt0wQiOuGvFJjMP' +
    'yQaEhafCjBFBv/GHQUC3a1fESXl8hwIbfjhy6nvDMAMBS6kRYSuWtCC0vts2VfvD7ik/uDG2Fo1W' +
    'GcLkkVJFAKwNpCi62krbJCdRxdHHwkOPREBn8cUQQSgP+ASeAe6L4CKwwXIP5FbTeQYegCxRW0ZO' +
    'FKgMXMEthxmbK3Oi5aNPRO+8Em9fng0//MjXBsdfYL0uCdJgZNeW66wojamGV9ROr93e3mt+8D7Q' +
    'i1we/L5iokYeCfEiEHX5qF2RgVgA4V0hq6uPJX+tyevLlDOBWEj6j6xBrzDDSMQm/Qc3HucGzz94' +
    '2M0B8IMUr81NoNABz9FvDtI1E6ixZQ5Exv2n/2Zk+HE6PEkJKDgNGcn0DAKjbHn+6vPtxZ/7wA/t' +
    'tWSiTBXItclMlcBOmQFqorRErxiQEn/AOQcqnysRjQ8d8iLrRFHzm0IzjjLTBSwWzJGroYrQJdjQ' +
    '9ZJSTGy4sClQ2JkfjLIeEsm+mgdDKHD8G4O4IJ4B+jlI5gXMoBz98k+mCPfu8czQyHLf+NHiCt44' +
    'zdLnzqfSt4pknolZKYal9CZB1iOd8NdY24y6BSr1Wx4ZcJYUJzSNRJbon0y4Ah8lctRDhQA+PM4d' +
    'xw89FqHujZxE9ApZxYe+3EeEGPiWTB8yWqkTOPnSEA1hzFamrBQ5IDzn3s9c+n/TML4rtq89867+' +
    'ZUzo7kPcmxI0wEE2UOwMedQJrf9ACWnb2g6GcwBrNx/5eswZo3wE7FKqxlI3CkD0AJSkKAw8HNKW' +
    'DmQ/8NQn/zwJHnzsxeHRLwRJ1qZMm7MES7cYikt0QFUXqV1rce0xde7z/Oj6togOskYY40gVLXUK' +
    'MBEDF6y3w1nhSHLmCEvQklx6lkgOu+Lud/Qd9bKWPelVM+8mpt9OTb+1RGMgdDWWK6m3h74SpbkP' +
    'nED4afgY04JUVWJQ7dkqXZ9tt3fqkR/r3xk8CtUdOuKjxgmWkGOgHWN1WQNDbqKQkBuhpPoN1M82' +
    'LaS2HPGwqhcaXlKz6goKHzuNhfIIs8fOBuENfiV2XeJK/srPZ+iYLx7fnlpS699S9nw++MGDAkwB' +
    'mRx8Njr8WKT/lJ8ykQNP9R3+SowOmvxEQVRutmSj9KdfCnZI+6RAxj/oILe6XpbeA8wEglrg+WTR' +
    'EZFEW9CN6Oov5ihjRIF1uOjdSbUne/WoP7q+OOrk8FdjrOKSkfU5LbiTdA0hdwR51Ur0xz6G1jTo' +
    'o0AU2wy7gAV0a9kGrbFZr1ALtQ6fi7Km+tK1XHom3x476XrTvd/5ueEHDiDN2MkzZ0kWrf58I2IR' +
    '76P3wMA5YBgJ/apGWoOVVe78ZbFr3Hej69yX/Z8beWV3WwKHPCj5zATG6BpJD2yFtidASzGOd9hN' +
    'rT99sVkCje5HVrcshE7TG6rZAWPQH/fFq9g6az83/KC9PrGpShY4fQ26x/BHl+DrIbgkZfQRaQBI' +
    'tiNuPAKNFpjkGaFNSKBCpVdo0kWB7MYI/9YJt0tH9qI+apcebe1lwYDx7FRob83kwMIV/xEEDGjS' +
    'TWIOXTwEjMTDx81kjUIWjJaGATQFtJlous5yK2ysvbaOvun3yTqIxKAW922tpOIYLdlAglxNSfES' +
    'bbESp2If1ezXfjmbvJ4Xo4t+2R7zib8apIyarx3X18nXzw0/IDdEV+m4hpTSJoZld9TUU9LgAIs7' +
    'gues3n3913M0opN2NzXF1WcdeypKWEUnDOh4jM8NP3huYEc+nS9A4JBSPirktHIsVipYF1hN3s5d' +
    '/+380vUcgUnCxrHTfrrEg7V0XEoPX/X4TF3pgpkk8uqeY756CKnsQCCk5PATLjfppl1BcvIK77wc' +
    'L2cb8JO21PR/0noGrV5IH1t65wfkHvlChMVoyDpU7SKU+Rp9jo0LGySoBdhglY31/CBvmIxQSk8y' +
    'dwsSf2w2gwdc5D+sm2z3nye65gcihUx1snKkKTGqW4IjnSQj/wOJJVl3AtOyspq6qt7aowCyWAiM' +
    'hvjJ23kASlhCcZBEJ/UnsvTLD+gbPOg+8R0Wz5JmrysUhiFreMIEkpUcWcmLVGzqNqSPRuvgeydB' +
    'd9Hz5SaBRZZ8Y4ZhApD/AP9WLquXf3X3QC3CgJ8ferYfcwj6yvAHGmfNYeZC6wh1A8rCIaYFoT3m' +
    'E/xQS0lWD8IEkIZ+eCRUblADr4a5kG4wsvNaqyfdty2d8gPikszZd4owhvR2wMUTfFC8jE4HBOdO' +
    'AntqXTXQeiv9p0VRiI5MI1WVRZlhjBTPqddY30Kxdcp93NjdepxtvxjNyKi6NLIANHVjC0TLS9Bc' +
    '9LaUFq4RR8wYSVCpNWHG5BtLqzVPK/fGQSH/E53B5HAN20kglmnRpCZIYiorR+nlX13ODyPJuHbf' +
    'sEM6UzSaJCeyxq3oXlnSo5OCElbCYELBiL+4nh3iwCOaKMUEXXf30x0evS/txgspahXWsFYPPNEj' +
    'Pyi2IJcH8EMkVMNANAmjCJSQBJA2xX6Pesgi4dPGI10MMOn7KwYYS4aKj2Jk/WhZUWGd8Lv/HNEj' +
    'PzB7iDiZEDKgIKxbXhTcSqO71qamnWzQV/TySj5j+0/aNmyQ/j51PEEjrQUkKbtpSFyl89Wa0rT1' +
    'J96XPXrkB+QVVAo5w5bgVvJB5uCdd5kHMmlYjWtDhsAPscrgitqABP+RHEaaHncUfNwX6q+/qR71' +
    'OfRl8CLcmR+YswQwxIJSh/kKd1ZfhDZy5C2ury5cPUIzAESzILIk1Wr67SQ5RO0H6Gdbj/MDpU2m' +
    'M5Yrg5rGIazpTB4iX0lLXK8/CMFSwKGlBXUlK7JO5SJd0sTQWryQXbiU0efk4Pl1Gh9karj8Uj+A' +
    '26Fh46SDpG7naMT3WXNB4AGLXKGT6JfZrBsn3ohvXirXlal7tlOn/JDueaUm/W6xstDkLOFGJDw/' +
    'X2l1HNk6gdDh0urbYSanZP6Curbu1k/e8yN1yg+EPWYVUoWeMGRSodfp5BAe92IqlTL0qNlQe68n' +
    'IPwgC4s0OAoMuhaCrj/lPu7RKz8kAK5QcE5Ldio8MJCQYCwEEj3hjRym8NBMTiJNDLdCOJRQ4IDH' +
    '4jaTf61PG7f9LfTLD54Sjzq3UGYVN9+AUzBaNR7lCFnBtQbPhYJQ2WoBtUW4beLZMbno0ef0W6XV' +
    'fEaPPsfnhh/CkrpCEIk1a70xB8m74pqws0m1uQlAhWZAFLrRoI/cKuRbK6+3/Q3ZJvnKGbGRKNTe' +
    'g6zjGJ181fX80GgkLJkuSF/7KkUedOy2SMAcQFey2aXZJBUFfWcCZIoyYwiBIOLaGQMHqQKl2Qkl' +
    'PNJpWt+fzwE/sK/oq4yHEb+cpSElWG+jIt0YaMaOEBPvQmqpZOEXzDAW4hk6F6RWCjGF9tbqByhU' +
    '8LEUVby8vtRcb9z5HPDDO+g68HSURQm1HgCUdC5cSM9/mKHGgKRQmhvasYlpICewO1qfmjOZEDQO' +
    'J/WNnuV0xMROY95gmMESvTGg43mY8Xr9gLp7rQgoCjtY9Q4eTL29ugxb66GZJeSR9p32UTRNK39E' +
    'mdSFCl9UEMzA2uaNOOe+k6QbjJoR0TpVjxs6nR+40/RAPPXXo+AlIIk0pFy6tgxOtZ6EgCv42xQm' +
    'z3+Yzk6WwKhkYR1tXQlJoTPanCYWTAiNYzSbaEigc5bokR8oDBbPZqkzim7jF5bJpAaaZdXfTUAq' +
    '+ISqYIkcDot/Qqv2OiXl9M2VaJUa8WV5SJYsQmqhQtrbIK9n8P3do0d+0HiBlc+DYy7SQejwifeA' +
    'ZqaL2VbCqwgqYn8gXXCFQluW9KITicYVRBgtp0krwSLYxxO3OuzwJGjVeuCZKGYuYxmDis7RhAjJ' +
    '+QRE2fqHLF5KDljZQOuqSzU0qe+IL1rN0ThbtyzR3fygLdXBZ/to5SMNAO4UadsWOxkggkT98taZ' +
    '0ToSIUYj5cR1aUJJVpyJFoANaUpjc1gI2bYy4VvH3/cNncU/sKk8NloW4u4RlcJCxZAlbfdT13LZ' +
    'nI500Lz+27lLP5mpFaXHAJbxyBPh0cej6KfNT9z7X/XFD3BDi8ukrswp0TwgENBAcnx2KO65CEZz' +
    'dq7IotLqnCDNtzn2VBgcRdIb9PTRFz+gDLRDTRDRo8kMK3PSvGT2wxQV/zshGkoerJ4GGSzXHb8g' +
    'jUmYJbQwpTksweCdXLnn5+qLH7CBqdCktSQJCFYDS2Ky4NnixcxOcXJFwUJzBfFLTNJYf0kyfeoN' +
    'haXnaXOCANPPR2f8wFpl3Qki52BWFhNrdYw+GekJsQizo5BYfw+pRdU6uYqkrhAJDox4gMJ6coue' +
    'XERf/OCVxHu4VWDIMlesbhOGb/REQJTwzj6CYhXqzAa8fbrwUUOFEIPrLLOAhb2za/fybB09ivZa' +
    'xKBIIokcxsyShT1ZEzd8SBbsBSzRwNrtvT0clSaBVhNOCUgw3ZXpEwgqw9K5SzdkGZbtXbbnZ+mO' +
    'H7wh1KGWiaWi1ZggDRaBOrwh1hauKgT4tuKldyUTZjTQFqXpdGPsO83qF2bMOcmNu5bbof3W9Xbb' +
    '26k7A5zXwLWmbxxA4YlvDznD1nqtSS5ccNwVODiWuVtk/aHFa8vtnV638uagWMSpTP2y0g0gClKL' +
    'j4ArubquEEY98gP6Ipro5VZO14+/OEA+A9UfUE3Wpj3mplsiK7SBo7AiKOsebBI5b+eThK1qLJnO' +
    'eqEme1ACWfyqJmtv2BC+/fQ929ajvLr38oqBko7Fq8tEnNx9dqwgctTx1VHtrJPNGjqsjupjJciG' +
    'AUW9vg5hPQVZZoECONaS9g066bpElz96ltNnRoK4nwUZW3/lHu7RLz9cUfvw4xEyEPAHAbLwSGhG' +
    'Su93hIxIGBpcOQhsuAbPBfsfCPgHXbQvprKtUVVjhN0oRAEn2VzEUWhj6R9zsiTb0tUCjUZbPRm7' +
    'nbTX+3Qqr5DvtJwcfTJMU2LCTfRYYGVnGrwNPxbuO+VzBK3ixlPfVGU1PIXCWdYXGXkqTFu/7FyZ' +
    'zsmpW3n8jI54Cau+kJ3Ngh80kwcDIH1r/sPU5onYe80NauP3/pZbuSOGKb2Oke+tDB1ADkwj/mPp' +
    'ChaapXNyYAy8VoqmpM81q0MSOccSG3fhdTdrhnKimrgpUZDURE7DcVnSE8idnhq1onRmmn0vnbyT' +
    '24qg28oD9+oYncorQhTA7PTrYQHBjn4ktHkjsw1tv3Qlx+JtFN2yWoIsNE+TBhiD4lZXBLP7zMFD' +
    '7sEHA3QZZfFTcDCayTIzaOjLItTo9ruvLnYNAPeKstu7zk793u3d9VPPor8xXVlpgvHJ309QQrjJ' +
    '8XjXNLaKHvXJ4l+DDrVRJXU7UmNA+xkKPqTZktHEKnaw9s5rceYK9q5CeUm1cx3nTe6yZz/pdH6A' +
    'LA08FGTdFRbM3pwWkJ5KQKKHYLez59PJWyQzNq2UbbqtJP6QDCfTRWFFOzMpDdhjpUSVcIjexFTr' +
    'HfXID3Q1JiktX5LXc1tZzEN7GRQIko3ILiyEMakbeaVqQJRRsXCvZ5mieIec0eM+lkEqsCSCLrvE' +
    '6ZEfVNBgmJJ7wKq/28vwxAkH0KU/XPwinnzD4bcTCmQnPCAViEwtLDGqrbARWgNTJxt65AdqnCVp' +
    '6ZdBa+nNls5ZR0ImljfqZLWhk98dpjksXfip35k5nyKXjmVCyBsS94XOGsJvTzlZz9N8X2ezRI/8' +
    'ICWHNTZxQabfSeHfrSN7lx1odfprjD83wDpcsbM+2vcADNMVCKEHRoJ2IWGO5qKBMbcofFZLspvp' +
    '0Z9jccq0jpxzXkyP/gecoNEhnlq9vGYxofV8YEK4Iw4WN+x/0EciD11PBD6pNgFu8TDIKUndLrBU' +
    'NMFBjC2S5C/8eIruTYHDLmOtSQXC4a/1FdPlHQaD1z/VTvbokR84g1a7tRCvENHr+m5oAmfQgYKJ' +
    'nQkED7nIrVK9Quk8g0VF4yX4hLcx9XZy+p1EaykudmZnC6wHdeZvR5g6HBw+5iXXazKX6PDku950' +
    'b3bqjx8QlJUm7EaQ8A4S0A6csoHwIXfwiFdyqDxS4y/Ibw13AydD+sM1qoblKRLgM/OfZPKLaxaS' +
    'IjiIj8KK6FNvJo++0M96E/RtGHw4BKKVLXbeq+PWe/ZVf/xQXWzCq61F5FEAxKZiDwQCh93kJCCU' +
    '8PWkwRJlHxi5RrpgEAs34qvPXxMvhBS6rqtiwzy6JQPAgCECD0dPeUBPMKy9g26pbF/XqWZ5Tvm2' +
    'AAAD00lEQVTPeNB+I/3xQzHQMf/CP9xl4RSiFKEx9/gLA+C4wgYVutWitogs/kNMAQum75ZZr5FM' +
    'algorNrgw4ks8Uh3d+CW9O0Cc8XkpsUfwKVz6bo0ltvgvD3drT9+qGWcKHP/gOvAV2IDZ3xm+vUR' +
    'pUVLk3RC7bNaa1vLN5fnciRZ08WVVSQ6MK6uJGQyNZUmCVeUuIH+1os1Quj47oQgqWroUsrQ9Sq7' +
    'vFOP/IBetLE8+dKgPWQDaJJqc1IP0A2V5vJCNX07nwBOn8yXsp85lo6SkTV0TZL5WMfQlSQTKhCp' +
    'atcLjqc7fsAMViyFGVavBRRWEhatZgzW+Ss51o9ihUFg822OUU2SwRPoTwBFNcrYxEQGFd7mNXt9' +
    'mr74gaXbdzrAYqZWjwVjF+kE9DT3Xubu64tUx3Y0qvyspIDkdEMh5I4i8UQdhBeF2fSKWyawtc+P' +
    'buQEOT/6dbFESeqBUuVMnfTOidcWt6Ieul1v7T5FGj7gFeInhg65KTxESBHLkoqpbc+5tXfY+Tcd' +
    'zQ9iUH3HA94RJzMD77owX8F3i1/N7PwltSvA1Bu/ny8myyTYhQ57sKzIGa2mq9lZHRWC6ChfFAg2' +
    'coy6cTwKQzlZu/mHhR4yA5ZgpLHeHfFEFphyBC2YW4SqFq/m4ZBu1Iee8CsyehwBi9aAPXkrz+qB' +
    'eIKo2h4mD7KAzvFvDUitrbScM7JO7dxH+kpp0Mv8ELTDYqaHpXRMrIpMB3Uf+2Kk71SgV/KK67Cy' +
    'c/+DATKvVN1umHgtQRncJi5kD2+9xUvpRX8gMbQ2ugKAUAWSb9IxhgQfg2HNalFbfKuNDlOkpFNK' +
    'flAdk28uTb+b0FXyFY+tl/nBowA6sVwXOed4ZySLQDiAKUDAjYi7jf1VXEgsqobx9stLN343X2JN' +
    'Tp199DI/IIuszzFZihyn16HR4hFAqVJsUFVGYc5GwPtnJSaLqKeuFRYuzbFUbW9s6M/6BJ92vJ74' +
    'UagnbmRHHg+xqCYNMhoVpZyqBkedKJJGtjcDmcooLAWZenr96EheAd9SEz7zftrKiuVRGxgfWh3x' +
    '5Qz0bO0tSfzVMTMYJPqKn9MDIL9YoV7GHXPQTqm8XKX3GyFuqmb0OqB7/Fz64gcvR+iUAjLiE6VM' +
    'BRjDGXKAkGcmitsui+oxwXb5crrjB+8LukfQm3ImxAu9AfxDLor+9GaY7hJfdKQ/1r8hjCnGyySr' +
    'k3G7/tf9PfeBAmoqiZ3amftw7/1b7lNgnwL7FNinwD4F9imwT4F9CuxTYJ8C+xTYp8A+BfYpsE+B' +
    'fQrsU2CfAvsU0DMF/j90gENOvNPraQAAAABJRU5ErkJggg==';
const CLAUDE_CAT_BASE64 = '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' +
    'AAAASUVORK5CYII=';
const SUCCESS_HTML = buildResponseHtml({
    title: 'Authentication Complete',
    heading: 'Authorization finished. Return to llxprt.',
    imageType: 'claude',
});
const CODEX_SUCCESS_HTML = buildResponseHtml({
    title: 'Authentication Complete',
    heading: "You have successfully authenticated to 'Open'AI, what could possibly go wrong?",
    imageType: 'codex',
});
const FAILURE_HTML = buildResponseHtml({
    title: 'Authentication Failed',
    heading: 'Authorization failed. Return to llxprt and try again.',
    imageType: 'none',
});
function buildResponseHtml(options) {
    const getImageHtml = () => {
        switch (options.imageType) {
            case 'claude':
                return `<img src="data:image/png;base64,${CLAUDE_CAT_BASE64}" alt="Claude Cat" />`;
            case 'codex':
                return `<img src="data:image/png;base64,${CODEX_HAND_BASE64}" alt="Open Hand" />`;
            case 'none':
            default:
                return '';
        }
    };
    return `<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <title>${options.title}</title>
    <style>
      :root {
        color-scheme: dark;
      }
      body {
        margin: 0;
        min-height: 100vh;
        display: flex;
        align-items: center;
        justify-content: center;
        background: #000;
        color: #6a9955;
        font-family: "SFMono-Regular", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
        text-align: center;
        padding: 2rem;
      }
      main {
        max-width: 32rem;
      }
      h1 {
        font-size: 1.5rem;
        margin-bottom: 0.75rem;
      }
      p {
        margin: 0;
        line-height: 1.6;
      }
      img {
        display: block;
        margin: 1.5rem auto 0 auto;
        max-width: 240px;
        width: 100%;
        height: auto;
      }
      a {
        color: #6a9955;
      }
    </style>
  </head>
  <body>
    <main>
      <h1>${options.title}</h1>
      <p>${options.heading}</p>
      ${getImageHtml()}
    </main>
  </body>
</html>`;
}
export const startLocalOAuthCallback = async (options) => {
    const [startPort, endPort] = options.portRange;
    for (let port = startPort; port <= endPort; port += 1) {
        try {
            return await createCallbackServer(port, options);
        }
        catch (error) {
            const code = error.code;
            if (code === 'EADDRINUSE' || code === 'EACCES') {
                continue;
            }
            throw error;
        }
    }
    throw new Error('No available port for OAuth callback');
};
const createCallbackServer = async (port, options) => {
    const callbackPath = options.provider === 'codex' ? '/auth/callback' : '/callback';
    const redirectUri = `http://localhost:${port}${callbackPath}`;
    const server = http.createServer();
    await listen(server, port);
    let closed = false;
    let timeout = null;
    let settled = null;
    let resolveHandler = null;
    let rejectHandler = null;
    const settle = (result) => {
        if (settled) {
            return;
        }
        settled = result;
        if (result instanceof Error) {
            if (rejectHandler) {
                rejectHandler(result);
            }
        }
        else if (resolveHandler) {
            resolveHandler(result);
        }
        resolveHandler = null;
        rejectHandler = null;
    };
    const shutdown = async () => {
        if (closed) {
            return;
        }
        closed = true;
        if (timeout) {
            clearTimeout(timeout);
            timeout = null;
        }
        await new Promise((resolve) => {
            server.close(() => resolve());
        });
    };
    server.on('request', (request, response) => {
        const url = new URL(request.url ?? '/', redirectUri);
        const code = url.searchParams.get('code');
        const state = url.searchParams.get('state');
        if (!code || !state) {
            respond(response, 400, FAILURE_HTML);
            settle(new Error('OAuth callback missing code or state'));
            void shutdown();
            return;
        }
        if (state !== options.state) {
            respond(response, 400, FAILURE_HTML);
            settle(new Error('OAuth state mismatch'));
            void shutdown();
            return;
        }
        const successHtml = options.provider === 'codex' ? CODEX_SUCCESS_HTML : SUCCESS_HTML;
        respond(response, 200, successHtml);
        settle({ code, state });
        void shutdown();
    });
    server.on('error', async (error) => {
        settle(error instanceof Error ? error : new Error(String(error)));
        await shutdown();
    });
    timeout = setTimeout(() => {
        settle(new Error('OAuth callback timed out'));
        void shutdown();
    }, options.timeoutMs);
    return {
        redirectUri,
        waitForCallback: () => {
            if (settled instanceof Error) {
                return Promise.reject(settled);
            }
            if (settled && !(settled instanceof Error)) {
                return Promise.resolve(settled);
            }
            return new Promise((resolve, reject) => {
                resolveHandler = resolve;
                rejectHandler = reject;
            });
        },
        shutdown,
    };
};
const listen = (server, port) => new Promise((resolve, reject) => {
    const handleError = (error) => {
        server.removeListener('listening', handleListening);
        reject(error);
    };
    const handleListening = () => {
        server.removeListener('error', handleError);
        resolve();
    };
    server.once('error', handleError);
    server.once('listening', handleListening);
    server.listen(port, '127.0.0.1');
});
const respond = (response, status, body) => {
    response.statusCode = status;
    response.setHeader('Content-Type', 'text/html; charset=utf-8');
    response.end(body);
};
//# sourceMappingURL=local-oauth-callback.js.map