@wix/himalaya-cli 0.1507.0 → 0.1509.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +184 -126
- package/guides/capabilities.md +29 -0
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -1013,7 +1013,8 @@ var init_compiler_options = __esm({
|
|
|
1013
1013
|
|
|
1014
1014
|
// src/scaffold.ts
|
|
1015
1015
|
import { mkdirSync as mkdirSync2, writeFileSync as writeFileSync2, existsSync, readdirSync, readFileSync as readFileSync2, statSync, lstatSync, copyFileSync } from "node:fs";
|
|
1016
|
-
import {
|
|
1016
|
+
import { spawnSync } from "node:child_process";
|
|
1017
|
+
import { resolve, join as join2, dirname as dirname2, sep as sep2 } from "node:path";
|
|
1017
1018
|
import { fileURLToPath } from "node:url";
|
|
1018
1019
|
function keptPlanNote(kept) {
|
|
1019
1020
|
if (!kept?.length) return void 0;
|
|
@@ -1056,6 +1057,20 @@ function defaultWorkerTsconfig() {
|
|
|
1056
1057
|
function offRepoImports(body) {
|
|
1057
1058
|
return body.replace(/(["'])@himalaya\/([^"']+)\1/g, "$1@wix/himalaya/$2$1");
|
|
1058
1059
|
}
|
|
1060
|
+
function checkoutHead() {
|
|
1061
|
+
const r3 = spawnSync("git", ["rev-parse", "HEAD"], { cwd: dirname2(TEMPLATES_DIR), encoding: "utf8" });
|
|
1062
|
+
return r3.status === 0 ? r3.stdout.trim() : "";
|
|
1063
|
+
}
|
|
1064
|
+
function ensureCheckoutTemplates(run2 = spawnSync, headOf = checkoutHead) {
|
|
1065
|
+
if (process.env.HIMI_TEMPLATES_FRESH || !existsSync(resolve(ENSURE_TEMPLATES, "../gen-templates.mts"))) return;
|
|
1066
|
+
const head = headOf();
|
|
1067
|
+
if (templatesEnsuredAt !== null && templatesEnsuredAt === head) return;
|
|
1068
|
+
const r3 = run2(process.execPath, [ENSURE_TEMPLATES], { stdio: ["ignore", 2, 2] });
|
|
1069
|
+
if (r3.status !== 0) {
|
|
1070
|
+
throw new Error(`could not generate the starter templates (node ${ENSURE_TEMPLATES} exited ${r3.status ?? r3.signal})`);
|
|
1071
|
+
}
|
|
1072
|
+
templatesEnsuredAt = head;
|
|
1073
|
+
}
|
|
1059
1074
|
function templateTakesBase44AppId(template) {
|
|
1060
1075
|
if (!availableTemplates().includes(template)) return void 0;
|
|
1061
1076
|
const config = join2(templateSourceDir(template), "config.ts");
|
|
@@ -1106,13 +1121,22 @@ function extractTemplateAppearance(tokens2) {
|
|
|
1106
1121
|
const palette2 = [...new Set(slots.map((c2) => c2.toUpperCase()))].map((u2) => slots.find((c2) => c2.toUpperCase() === u2));
|
|
1107
1122
|
return { ...accent ? { accent } : {}, ...slots.length >= 3 && palette2.length >= 2 ? { palette: palette2 } : {} };
|
|
1108
1123
|
}
|
|
1124
|
+
function ensureTemplatesFor(...dirs) {
|
|
1125
|
+
if (dirs.some((d2) => resolve(d2) === TEMPLATES_DIR || resolve(d2).startsWith(TEMPLATES_DIR + sep2))) ensureCheckoutTemplates();
|
|
1126
|
+
}
|
|
1127
|
+
function canonicalCatalogFiles(files, separator = sep2) {
|
|
1128
|
+
const posix5 = (rel) => separator === "/" ? rel : rel.split(separator).join("/");
|
|
1129
|
+
return Object.fromEntries(Object.entries(files).map(([rel, body]) => [posix5(rel), body]).sort(([a2], [b2]) => a2 < b2 ? -1 : a2 > b2 ? 1 : 0));
|
|
1130
|
+
}
|
|
1109
1131
|
function availableTemplates() {
|
|
1132
|
+
ensureCheckoutTemplates();
|
|
1110
1133
|
const generated = existsSync(TEMPLATES_DIR) ? readdirSync(TEMPLATES_DIR).filter((d2) => !d2.includes(".build-") && statSync(join2(TEMPLATES_DIR, d2)).isDirectory()).filter((d2) => existsSync(join2(TEMPLATES_DIR, d2, "himalaya.content.json"))) : [];
|
|
1111
1134
|
const showcase = SHOWCASE_TEMPLATE_NAMES.filter((name) => existsSync(join2(SHOWCASE_TEMPLATES_DIR, name, "himalaya.content.json")));
|
|
1112
1135
|
return [.../* @__PURE__ */ new Set([...generated, ...showcase])].sort();
|
|
1113
1136
|
}
|
|
1114
1137
|
function templateSourceDir(template) {
|
|
1115
1138
|
if (SHOWCASE_TEMPLATE_NAMES.includes(template)) return join2(SHOWCASE_TEMPLATES_DIR, template);
|
|
1139
|
+
ensureCheckoutTemplates();
|
|
1116
1140
|
return join2(TEMPLATES_DIR, template);
|
|
1117
1141
|
}
|
|
1118
1142
|
function idSegOf(name) {
|
|
@@ -1154,7 +1178,7 @@ function sentinelizeIdentity(body, identity) {
|
|
|
1154
1178
|
}
|
|
1155
1179
|
if (identity.name) {
|
|
1156
1180
|
const re2 = new RegExp(`\\b(${NAME_FIELDS.join("|")})(["']?\\s*[:=]\\s*)(["'])${escapeRe(identity.name)}\\3`, "g");
|
|
1157
|
-
out2 = out2.replace(re2, (_m, key3,
|
|
1181
|
+
out2 = out2.replace(re2, (_m, key3, sep22, q2) => `${key3}${sep22}${q2}__HIMI_APP_NAME__${q2}`);
|
|
1158
1182
|
}
|
|
1159
1183
|
return out2;
|
|
1160
1184
|
}
|
|
@@ -1481,7 +1505,7 @@ A per-app \`npm i @wix/himalaya\` is optional and only buys your editor local ty
|
|
|
1481
1505
|
);
|
|
1482
1506
|
return finishScaffold({ dir, files, ...kept.length ? { kept: kept.sort() } : {} });
|
|
1483
1507
|
}
|
|
1484
|
-
var PLAN_FILES, PACKAGE_GITIGNORE, MODULE_SOURCE_FILE, TEMPLATES_DIR, SHOWCASE_TEMPLATES_DIR, SHOWCASE_TEMPLATE_NAMES, BASE44_APP_ID_PLACEHOLDER, BASE44_APP_ID_RE, TEMPLATE_META_FILE, TEMPLATE_ICONS_DIR, HEX_COLOR, PALETTE_KEYS, IDENTITY_SENTINELS, SENTINEL_RE, escapeRe, NAME_FIELDS, IDENTITY_FILES, DOTID_RE, BINARY_EXTENSIONS, extOf;
|
|
1508
|
+
var PLAN_FILES, PACKAGE_GITIGNORE, MODULE_SOURCE_FILE, TEMPLATES_DIR, ENSURE_TEMPLATES, templatesEnsuredAt, SHOWCASE_TEMPLATES_DIR, SHOWCASE_TEMPLATE_NAMES, BASE44_APP_ID_PLACEHOLDER, BASE44_APP_ID_RE, TEMPLATE_META_FILE, TEMPLATE_ICONS_DIR, HEX_COLOR, PALETTE_KEYS, IDENTITY_SENTINELS, SENTINEL_RE, escapeRe, NAME_FIELDS, IDENTITY_FILES, DOTID_RE, BINARY_EXTENSIONS, extOf;
|
|
1485
1509
|
var init_scaffold = __esm({
|
|
1486
1510
|
"src/scaffold.ts"() {
|
|
1487
1511
|
init_source_deny();
|
|
@@ -1491,6 +1515,8 @@ var init_scaffold = __esm({
|
|
|
1491
1515
|
PACKAGE_GITIGNORE = [".himi/", "dist/", "node_modules/"];
|
|
1492
1516
|
MODULE_SOURCE_FILE = /\.(?:[cm]?[jt]sx?)$/i;
|
|
1493
1517
|
TEMPLATES_DIR = resolve(dirname2(fileURLToPath(import.meta.url)), "../templates");
|
|
1518
|
+
ENSURE_TEMPLATES = resolve(TEMPLATES_DIR, "../../authoring-kit/ensure-templates.mjs");
|
|
1519
|
+
templatesEnsuredAt = null;
|
|
1494
1520
|
SHOWCASE_TEMPLATES_DIR = resolve(dirname2(fileURLToPath(import.meta.url)), "../showcase-apps");
|
|
1495
1521
|
SHOWCASE_TEMPLATE_NAMES = ["video-courses", "base44-starter", "base44-booking", "base44-inspections", "base44-fitness", "base44-podcast"];
|
|
1496
1522
|
BASE44_APP_ID_PLACEHOLDER = "ReplaceWithYourBase44AppId";
|
|
@@ -4091,8 +4117,8 @@ var init_catalog_v2 = __esm({
|
|
|
4091
4117
|
"../html-to-t5/catalog.v2.json"() {
|
|
4092
4118
|
catalog_v2_default = {
|
|
4093
4119
|
encoding: "gzip-base64",
|
|
4094
|
-
sha256: "
|
|
4095
|
-
data: "H4sIAAAAAAAC/+y963LbOpoo+iqrtPvf2L1q7+kzNbP2ny3bSqJeduyxlKTXzOS4IBKS0AYBDgDKVrpSdR7iPOF5klO4kARIgJJsSZQT/ElMACJx+fDdL/8YrCDjiJLBb4PlMv/1f/32bwD+27+kf/nXv/zPf5v9X//2r7PB2YAnS5iBwW//GPwJpYPfBgnNckogEX/WPX/+O6dkcDYQSGA4+G3wAWUAgzX4ZXL1afxLNXpwNnhIaJbJP38bvB99HN0Pp6OrX+aMZr8klMFfBf+Vs+RX81bBf5mtf1lAci7ff25as7/zX/6//+f//SWlvxAqflkCkp7DFIk//3INCYJE/ELJLwV5JPSJ/JIzmvP//QsXDCWqg8H/LhCD6S//9AskRcb/PDgb/InB+eC3wf/49U8pnPNf7fmqFrnwuvG3fwzEOpfLpLO/w0SOkl+BTCCohsotqsbIL5PF4PvZYEbTtdpC92uq+fvZIKMpmiPIePsD388GyRLhlEFidQLGwHpwNkACZtzz4nrG379/t77fnHy5I4Pf/lP3fW0uKAfJI1hAvQ2Ey8NbmhOWc9Mv9KxYbb5nOd/PBgDj2/ngt//8xwDN1SecD5ZvLL/2eSJA8qh+2J6tnMFS70xj2v7PN1f3yq2Va0ELkhnQkEAl54YhSOU2nA0SSARk8nYwgLBsk1PmOUjk3/VHSZHNIGstspreV3WM223Yh7hhu23Yf/xoG7aPTbkG39bXiIsDbUu19hftyZIy9I0SAbD1ihmlGAIy6ISXswEXYLGA7IZ7eym5KzCe0ns4Z5AvB7/9Q+IysEAECEUo/6FegZLH9QcIUsi653o2YPRp8oRyOEzk77l+gVrlHRBLL+oEBGVAwHFji6z1MSgJN7wGa1oI/5CEEgGJGBMOxZTm3sXaYy6oEDTbfMP0Ae0CSe8ZSk8SihKKi4zwwNaovhuYoiLrGjF6zgFJYeqHtQ447IaBLij1nki9nF3O5hKw9FQRXw7SNHiJOzY2oYxAdg9SVPjPdgaSxwWjBfHzaj0h3EmOkfiM4NOBziNnKANsvQlfpVAAhDeNMi+7Ac9fUOqAcABIy69XH9hla67QCqWel+5lY77vdEYgOdQ8BiuACz8vnVCMQc7hlyUkoywXax/K32Ud6iUTAQQ80FqMMOhDbMUs3IkSSvx3Mqmpr/77Gswg9o5Vr5+I9YYJhEfoD1T9JQqoQZjDhJJU/51jgIjaMPMz9M35Fc8GZ4MsbSMJvQu7XIMpfD4UOybkq72bCbMcSzhRWy9QBu8lVpAPGSIoK7JJAjB8BxJBmRfbZpRQia5heoUWSAQ4GsEKkpQslo8chg4rodj5cN2TgedrRKCfBmSAPab0iQRmA5/FUJKBbUnA2eDvBRdovtZHAZ/FFWKwBNrqFaAQdHA2wEL+mAmsRqcwoQw0hxYkhQwjAiW8CYYeoVgyWiyW6jeyY9JJA7fAGBWn+bmBedoj7uEK+pntXdDOOJOahMNAcMH82ABwDv2gjQgSCGDu7XwKkLWzwRKixVJ08dNXkCcM5UFgNsNuaOpgijmSq5ojjPWRQ5How84xSOCSYiNteJaYw0TcSxDyM0tLkDtfYkb5I1kgmEqARizB+hCCKFhOrEns7SuDiH+bGZSQjMiiud4KtZwNKENSwjJcwfbwJOd6GHAiIIPbLacNOk0AqbtWgCEww60LV58VnM/ldLw40FCW1m+CW78VPDa2Ty18F6p0UQhxsGNgNID2wzyEzSqEyUaKuDyI1A/MZW9QPDO0YBy6LCVhCA7AFDSEG1t9EeAhzgZY68PmReddlHf4luB1SDOwQT7KEPkQQnJeJqba9F25mXcI4kPJn5uwZpjdVj3Bo6fkcgnIwnBEj3A9o1KI1vAGk4IFKGlWYCFhAt508yXP15AsArRH8g+XIEcCYPStxTIQqriFJ8pSrrhUefsTqHQDS8BAIqSF4ataw6SYZUiYWReLBeSleqp6nbLq0Plca2DV+IrpLsek+pMLydUQyUOqz6bqP8AM/ZrTpOCHu0oJhoAZLOTd+SXEOWTTEIsLGXM4SOuXOYNz9BwQI+ahrhllkneDPMDrrgBGqaVOVBMI7o/qDU5+hTiaIYzEekoXCwxfy6KZtxzmSuKgzLYKc6C73EbBQPJ4G4Sj5PF2Pvd3Lotsti9GsLF3em07qYIEzPOj6RnqFXVvdYZICGUFVOn20eQMSoTUQlql/PzqTRuugACH2jMkJZdPARGjU5AIcG273MkLkB5MbAoK/mHWSdBHSMI9Afhpzl5+dyd2ASyOrvvoZaF3jC4Y5PziYMCcmy94b23ZGUQDQWlDIdjLoDomjHYQSaGALJM2tm41RBqWPcPzraa13YFVu7PLob2jLDsU6kkD4jjE6cttX5qfq7mmLmW/zS02bU/poJpK46W7bt8hZYHAHob5EckyBnmuen5bc3c3kHPjRdMNfSjdbePkpo0UA3ts+iBN0EgrFktarjnps8ETYKR03ZAvCN5Nxb0GmNbXolGUPB6MhaJ5JS0Fbp+6YxDDRMB0nG7Bum4SV80ng1upLmE3q5VBUsjTWUKoVIxLCEWb8yrXtpOBDgh40A1XxOMTQc8hhUW4DzyH+xoayVRrI6WVQxoqgYDqz6+tw+pilHeyJ0oT3LzAE2MqOMzmcWHoamXJoKUlAyrbwFl1c1MggDYw1PqpLtIAjW3BEqO/m7ds+KX5wHsGEhjwxTFD3mFKt3KE0OvcSdB6hBgeTnv5QiPCBvVcQgsiXilSvGNgIV0cJpgeyqSYAB6WJWXnJvSZwjkosLgEfAu6WX2tfLf7+12A4gtlj5BNiplg8GBiF4Pwr5yS4AblFKPE3Kw5wFj6rGxk6px52l+o3me9bKd7opR5p6mtdTGzq9lM4YwWJIBgdrovCAvILpco54dzl8q3Zyg6Gf/2TVG654n6tZ9pbWxiJ6/RdnbK+Y6i/OxQuyjkq/fIlfGmE4iguWSdpEen5gs2sGXSMLKCO4ifagXOLHe7qAqtw/SSEsEofjv8704wV37/xft0CRgtOMSn6ZdaMKbcclO4jWZVGoVyDNZj6ZSyAjjATXX7m2K0gl8QSenTIVyA78DiYKJBDhbwaHvNl/RpTFKUABGyGe2yk3ruu5oG6gkcSl6A+Y4EZuM2thBpSoW8vzMgxQ49Dnq85PRcGh/Y6aZrTyhEFsZfvw8DgewcBh2RXugsCY3n+YcuWUK7gXWOeb2fNgMYg+egD+CrHR+1aWciGMoPdHxAfaGDjOv+TQQv5KFDV5BhkIddtDLw/LmlC7M9uOjT7QqyOXawis3Amd7LgHAoxaKwRxolU5BrDMe0UJ4i6FXz72a3IuRgF86nf0RkTpUaOkmkAr9WREqVBJEk6GvndcuCWlrXrShFPEM8qLrc5KLcRHHlSs5ecDUmBCSPs4OZirbekUJ7sAZ4j5cf1k47Wc52J9yCIRNXCGC6OLovfNfuJpTMEcuG1iYngCQQ2y0p5IIVSsQIRoHJt4Sd5fU7w/0ZTQN+v35HMHfauxzEPUqWB/RwZ8UGeaXxVTV+J7URnB0weqcI+h5Il7IPIgvZsYJ0f6PXcMIoxiPS4SapDntRAmcOlCMSgvy+bSDbgoecMZQuHB5RO7M9GlSACBcSWgPipJa0w94rhejw52RQKpt/h+sO+wrGIfcyucd7sAbIcFsZ9Hko7yu4lUr/hdyoYnFkuEKXD99mS3PFhwBFFihbezwckyVcMeWemCxh8ihjOWrK/prIH9V92RFR0hU0Ur4+/Ptyj0IjdjId4cOFxHX4auzqBCblty3kamb+9GxrIV3hPr/QZy3orNKpGe52D9/plJR6ClFyWH3cixwrH5EOgC0vl7pLM/osI0NAiqialoyTzbdS4HUfRLe//UYPoF32XPIeKyTWh1aTvNSPcgt3p91DPVggmGAneU2lAJgot4ADGTl0QMoWMciQiG1UUJaKYaNQJoXo9wzMZpCFjCBX+h2OG0UIZqvusOd2g52Z6RQLZ1YkoZPlJMhrG++QZky61iqobVFcoBaYCkHNMkJm9ZAwtQOo3EhXkgOpYkiypBvTamzSsH/36hwZzRX9NqFRKl5BS5gPpTfMJkV51yExuJISwKZ0TDs441MsDqfz2mqjw96xYcVkA+61zawL+jXY6iUxJBNfOL8H8veYksVDzrSuoBru3Nld9vaO5vL+9Lq3W6LDV+3nq7FYAyuGFQK7KOWXB4PqMCvU5HcA5zK/kcSeeaEil6o4KB2HK4zguSlCyfRrLXXIBsBgRlcgSJwsyYeSezm2tDgZA2eAppneMA3CcNXhOB30cO/m1zr933eEAz5W239AHm1HW5b+TdgzZ5OjJhmmqe8k9ydTHNJZcFlltWqrQCgVga5XG5EQca1jL9qZK8QTTHnB4HsptpxWbhPYThRl3aiyN+wxV9OKF20wJVWA4G5KKYlPtT+J183syPKrd0P2w21pJfiR3eiD6RZ2z3jyfTcXrINFebbTqm2BdBl92sTOyyF7oDnvQXGwaLpjhVZuz+RITQ6Q3v5SQASlAbRDibDpFF4cibXLGUmrBFkcX7kZ2G4kPatAh5nN1YSFUxIFb3s3ePBwTqmdmC3ADstnheN8tmXDLH1OCck7ZHzqsHZxyNAGj/OdOA1KCnHIDeUYJRs95PWgjWDT1iIuUfJIQhGgOrvVNMjI6P5JF6+zDxJ1DRcyk0Q/DprfN+qBKEN2jNUrFnoFBOiXHr+eAJ8NliiFH5qygyMyCh0iX/0dpobg+d6dTQ2c3+CMgVdLUCoh1mF2uwNtbYzrKQcgE/ehTc7mL8spS7GHjD7uzMxLH4vDcvIpTQqpp+4MbrEHBWToa0Qed4p+edkujFJ0OANRMIdYuf6Xb9AmJYSgFG+6zi7TUuTSA2IC2QolMOgBMVwBhMNarK7MUYc4SZmeGRwyLKmbL9u8Z2FGvRmk295us1vTrgDqJWymEQu4xtULaU77JT5aPcTqd5yEdEEWAjJZxuT//q//+hPXK/vtz//0X//15z//0582HMRGfV4ovux1ofufKUrgR3qwFLxPYAXnMi3FTlx3+aswaur29Ky7O0IbOep4Q93dlRxdwHBPeO5QBmewdWdnhyHkTlpbDRjcgYLXMAHhY6XyBQK6EHMPBVuXfi5iVzmIuWutN4p1LTUo488Au9xDAPENYP9dwKNnJdrkZ3xYpRnKoLKzH2bRkIiNMupZOWoPShYZlHVYt6QkHIywS9jVLov6IpNbvLXcHxtiH3eLdqLs8Jk4tomcfQIiWe5qe9tgCNjDDt2K/JAGRxxO3rmfhKPSlTDLMRRwU8rRneLbwexQ7FzQah48aieDb0P1yeCiwCpmkGdAZcrGgC1gl157N7J2OL8EgUSRwkCmE7II936jNAsmsYcbo9LMqA4ZIiixbVR8M1o43IlfbVQI2Er+jVS4iC7rJ1Cik8wu6dMnDtk1bZUCsL45pxhvNQ6JKb1smU1tcRXkrSoPMsYglQl9zwYcCIgxUjmBlmsZnmBcjm5Abnlr3Kj9ddw3Fqjh3iy3oCMZSgYZCHO7Ulu1kd6oQR04ROm8qknK7Z/QgiU7E9jPKIX0yEEuOeUhx4My+D1cBIu5mhA7Ups6dbGcXM1BC9eLI2p2Ys3SeQ+xRF3mkyV9svjFwIZyAZi4cyPaXDQWVh0BeaknS/B6WqaUQlJUO2DsKZdVUwO83XauqYB1RsvLjTSC8ERVmwll6/SnejMOwRK3KFQm9WtArURWbRkodX0Kdd0a+5JUrsoFwmJMzPhMWZCTgmuHQxWF87Vx+aoQHRnqKROHkwTqZHOkjGy2f/K5zlu9lIX2KPZXUOu4ieX1bQQH6X8lb1BmyucJg9DwEzlKRMHgmNzpP3RrXRFMwo3RUSqvHKlWAthtzc3T/e7C/JyyJ8DSySPKu45Vvn2bcfJa/nsBiw6P98slyIXLJDRGTBkgukDEnjHeNpVOvlboPeQ4CfIcAiYD/wxHiKngNakFaa2SCalnRqRyyBvVWeoouasT4arndxWwuBy3DMpzMq5IXHUJMVasaMivVipZA+EuHZbFnUykVAh0KHUEL9kDX/GKEOHsJsc8h4FCieFc6jtpp1c9bAZgoqwAEdBH3oBkGYqM7N6wvWzLDSVieQkwlHztgfZnDUGw+ldAHC41JFdBXa41oEOlWxbP2pxOsBrZEeTLuPgC4WPqnIitltIRfVdVSTRK9P42kgQN07+DRKE+IpYB5Cs3rSPOhIhll8NYcN8y8NzZRwXvOBCpXG2ga5k8R0lrOkrzq3U2E8mobDzBalRYxjEjR2QzPJgxXbKOGnlfn0iKuLxkzYVp4JQVm6AOILbGhT3qladulyf/Vf0Wl44YRkhN7GXqTamCPmA93XZCXHmL/ln/V+2SDm4JnlPdHd7D1Yb4vu/VoC4jEBMfaOHHO5Ckwb6Nt1xe4I/06dpF2s4ZaxAbrSqHDGn4cY7VLGBaF1DsrhMNNY3Z6IRTjusIO0QiDJ6cgPwGkULAUAFstaiGypHBCuHJgIbhhhKcDEq9XfeonUJ6pSsYOJTdZR/AqJJlTGkYeVkDOkC6riseoBkq4XIwM70HLncCwhTyBJK0K5b463ddOtv8Sk3z80QYt44cJI9K/h8spdQI1kCGpYGFbkDnK65G2uUL7NARrQ58RVEDNgfqCv3nAFEVJ0hSRlWRggwkquUJziQlI3WnWMk5rnSvNFpQPvha+p/W02tWhq7nCsj6dj747T9reC1D8iR8l22maKjdVMXrff96oNlrm4NbMLu1yRbiO9wUgiWy9/xVdeknzSUeqka5AxH7goNgXdeOMuNngw9bX8JlvITxEsZLeIhL+B9bX8Jv8RL2cQnjDdjuEDqh/Bp8W8tkZdvAOQbf1udYB9rXoF4t65Th/GwwQxUzbOrrWLpbmb8xWQKCeDb4TbqgLtWUlpShb5QInSWhtT4nYdiPTGuUhC5TedzwPidByV0hBa97OJd2Ju9UQkk8lPwasPLJrMeZV7oEaarsdgDfeYRa29sJsMVOb2jdbFJgLG9wc3btTfbAX5e8u2FrvofmOAeYQ40+mqbJNlrKC750EJDOwWO3MKjcs502k+jJaVPGObtB2v0ejOHPbgcy3av70SqDbgvrVQDwtXu9hwFh4walYG0hk4WZjdwWfJOC8VAiQnJNQXpDHWN7vAXxFrzuFshyBpNAvdtGAY8aAHu5WxaNqlVu7uXq0pMdYkpcleJSUZYTWV5Ga0/5Ljcet6KBQi4JO+fhKN04K/iVwFMDc/DqhVu+fv9q+3pGLBSx0H6w0Iak6I33apCvAHHD2xu5jOMti7cs3rL937LvvfIEjntWi/ba6b4OOAmTZ2ccVJQcS5HApEMnh9dgTQvR60yMN+FYpoqbag+0vrQK9lR02uSTUeqb6mx96jNfV/7OVaD5vAhDqvmGysnj29DSBUV6GOnhvmRfS0cTNTMROn8CzUxDedLp39ZWa0RlRry48eJGZUa8ZfGW/czKjO5Ek01FgCcIvymh+wOhG6JzKFivIdNuWQr8bKDCErZwCFkwJYH+FL4gVurN/jQVagoyKLrITmAiIysNfm+OKf37xpyEjvEEHHS8+KS+OG9YjdVOu+vUZXcvZWjEqF00wjqWDkVYN03pUpNtOhE54NLEu27C9Sb7wJt0cc0l0e7Zga5/PNXMWtzXPOoMDb0aZaLb8ym5PVtXdCfkuDEVtwttbZb8uO7Wkxwj8dlUFtyEcrkcfK7qENqIN2coAzrzaf8uTikUAOHTmIvZmBvw/AWlAXasD06oPLBqt3q9qhb4bCjcag62a5Rny7t5kPZeyBFXaIWM4nnTpUjNUOtGuJ/oc3O/6zsOku3WwvVI+3JXmSV7oYte0bjsssViqU9CxNTYSijGIOfwyxKSkQxq7tG14HRgobPemWfDPCHaZwPVOylzZG+CJxVRfq5TattAVVV36U06tSrM9DWHUoft4fX2pM0+LL+a7Bo0EJXmUWl+EjEvwE0e0hcCUBioShLbNyrsfSL6VDzT8EC6YdocuFO5DJutOQaIDI6FDUs3iK6588yZYJYeW0DXhK9XTuSFZW6j1TcSsDdCwMCGLFYuyg1eg/CIBrbcE4500diWyMuPX2RzmUxqk5ygarI4AoL54ekInWaKQZlTWGmwtmWI7d8cAJ80z6X82k7cl9xCL++SwXs4DxG7DXhUdFfYacOd/BxrIAJZ9WDVwARyeY4eFGVuA53PZTF4z9UWG/flx1zWwVkjleW7yCYJwPAdSARlOytCyzkw4v0AJVRprtIrtEBivyEtPthnBUnCIfNdKKp7IbxvFryqZNXXBDLwLDNj9moOlDVNUvpEeo1HkuRmKE1Be7cGWo1/L7hA8/URxCO5nCvEoEdn1F6SzFvtzBOLBpIU+AhzrpM6b5pwQVLIdPU2m9kSDD1CsWS0WCyPMF85gckpWPVPR/leeTh+DloxjjyRe7iCvWZvOqo9AmBsrsq2rGGgOmOLlX0WMjnvCxjsN8WKB3+2xdJrBv1H5FpbMqderdLnbMxE7mVIfeUFWmylp/a8wwx6vOF2rRrqMkGtWf3g5+qyX57ttvmiA3JDLYblNWyKy0m8gn9okHifZ+dmO26bKAZH1NSqbQxWhzvOTEWuTRoepAbaKh5TKex0NDxyQh0KHsAlTPdpLyZIIIB5n3N46tePya5a03N6hiuo61q9RAuw/9mU1Ue6pBRZGcvRiMsaWQ2EA0VyDFFF6fBlXTbYq7ahUWKsN1dsWT5z0+lJUuRSF+lCClOX1CGWYHiEA3zjvisS9MMumUfT8SDSK0FhUPIdiCy2wR6V7OEwegzJzBT4yCbsXm3XoQqnFX/QNltbhLvV+RRwU+2sjeinQR4RwyEOryUJDazt2YHuio0VntsDdjuUK4CDGTzih78MuOcuveAGKTXB2CxsI0Mtx9n8NAEZfMMouQMZbW1X8TGsYX7xRe9bAYZkAaywQnGzHcvzWjifyxuwR2Lg4zNa3knH5XP6pnenxLk3FCPq8vZK1kr0sW+k0brXbQrYpHN1V+u2tWvxVRenfXr+nEQdSHwrsuo9Odl6UQixHe6e6ZE29ma0X8tvv97wfo8bNaUujUz0QI8OfG/TA713T48UcYlY0/4EYO+dL6fVlfjEGdPjFhpbw/htq0JKU8gbXwamIJhR4WhlkV7m/W9bkI5RKVAi0v6VX1J+vSV43XPW59PIQJEh8qFnw4bXidvOQ9afaFLyxn4n+g7v+MgQRoZwfwxh0JPD5qXaCKzJrrR+3uAj9k12mwR+3++3KK8He+8SSeIhhA6tar/eJiK+xIQbUrE4aLc7TUQTH5bRLe8047pdiMu5ZnOd3CmnYQk91SwPXXJAPaDHjaPkcgnIAkYtRCQ6b0sLcTaAK5Nm6hGurbsISUL1ZbRh6hGuZ9Sk5usScFI4BwV2twJmMrGOE3K4pA1vNwuiKrc45v4ohYlErccopg6TgvXrL54VWEi6DW9OIiTm+RqSRb+uX9Lf8hLkSACMvm0Vl0GaQPZEWcobEbFS5S+n7Fial4CBREDGjwBslEyKWYZEJCGRhPzQJIQXiwXknsqj7f2npOlQfgysr66hJy2Mh8o1McvCdQUnMkClgWfSRgNgR/G1nNOk4FFXHnXltdYTQ8Bqa3VvLM4S4hyyaZ+pHqQHAWOBmOf+zGBqTiHZV6XYFtYOnQ0IVc/qZ79kkHOwgP/7F5V975cMAsJ/WQGM0oEhfnP03G/GqXnPM5hRJiNuIO+3/KU6FLCrE0PNBvgLdizgsz+sDJGaiW/rwmwW36cpC/vgZOA53KkbfDR0G6mwKQJ6pEREBFzoNoU6Dfj7tyDonImbUW6UPMxwwZptmkcwH+u3lGyNJPrGnn2j8BXiaIYwEuspXSwwjOlePaplj3NdKB2so1n1lJGsVZ5RSo1S6l6kVFu92KNSsdL7tZGGVyG3Ixn1q7AOqLiydUvxrsa7uieNkqPH2UV74yhYDq1WcTQfP5rZvSHEt/GVK123ll+Jve1f1hKih42bh7pcmar9VlfYiSLODyLiOFKIH8qCMOjj271VB+rujW4WeqTtYoH7zvO96jf5VPSuiIxMZGRO0DRm1wAWDCSPt72mEtFTmM97ncOyyGYxwc3p+IHr1l71WOEq8KtwAquoworU5MjUxELh7UgFC7e2O0ukt4/kIP77q8rACZjnW9aBM0O3KwR3DLz0hpnYDJGefff6/Hxk4SPS/XFZeFRWC27seQ3pjSIrPxnvtgoqzboZNIMzfXo4b3tk6CJu2TtuaS62cZXDnNZwBQTYitECeqTNZ6lMuZ8Y3lBap8s+cHRGrJpzR7YWf/raE19XOeeOdfWbVevE0/nbwLxLXsTG3apes0V2985six3zaX6yfM1WKeUDuaZMluwLkG6XJXumBr7tQmi9p7YR9BGSE9szOaUuQbUecCoZ6XSJjV6LhIbMhuFI/Oro/T0BdtNfXESaHcFiK5sjWLz14oXxyvzYV2bPF+OO0QWDnF9sx+XmZvj5rMHrlh2npVYsZ9UFfc6YXvM2klPDNYiIznsrVeGXvRYa9M+7mtdGjXKf+lREUiggyxAJFZs9ckWztPcc+r3fQRdyToUcVci13ygEC8W3bkoTi3oyfAVS9bpYZKNluP5k6/4Eix+l4RTw4fm2QKGbpNZnJHveUZZtQ0/ncpyjM0r7hP96Hq0ZNLWQgz8xWbts8D9+/VMK5/zXhGY5JdBo0Q8xy2SJcMogqQO8fZGv4WkdZlYcUxFzP0QN9htOYtzUl1l5zRo3rVf6g/z3xJLWX4apXEzShT9iDE682Xu+2TvcvZKv2DpRoWQuPIkK+2Uxevfhl9E0fYc521ExMWdBDOh5qzkLburV9nWV9LPfEN39V13NqxGKaCKPtLWwrp+mHSnd1hwlj61GXVb56/eWrmqPG2EKG+9yc2MWgcgVxSwCMYtAlGDiXY1ZBGIWgZhFIAodbzCLwEbO4aA8dzgrWYx5jEQ8xjweJOax1yvP62BLHmNlIiKIsTKndkONEm6HC0rzSloJGQ1fZIsME3uuJrxrJIOui3UIcaGr0pnPJqVXttmYxSGGiYBpANVEjBUx1v4x1gbFtrntQbI7Lw2q3RCpBdqwp5ru/xJkel5VxE7CfNqozme9eglXjJJSt9C+L/UOheb/fVe60AapDJLC1VIuIcQ+IGsddomQ+yUkacgRt4vP+0TQc+g4w33gOdwXlNi1Ycm2VKGscT2BgLrxa8S2EdseAtt2iTB9KmfaXMvRYmj3zCvaHiqtzm5VaFSq/rhK1ZvghDyg7xUTAoBQulA0HCKaMWjRrSASr+hWEN0KoltBvKvRrSC6FUS3gsgB/yxuBQ0kpjjmszKNwtnODLZxMLb9CaIXQaTZ0YugPy+CwA3X9/MFd7yKF3A8CKLfQLz60W/gdXeyvE4vuJRluI7tMxA9BaKnQMRR0VMgegr8SJ4CftJhsP4LKIcxvVcuAtExICLXiFz35Rjgv60Kqr8qNkSmvpC4d1SqEzfmvpCjz7X28fQzunblKeRwBRkS61CQe6UEVGt1kCpg5Aj51o2luO/cfUrLh/tMpPiG8i5bMLUzJNmH7de1BlWsgRy0lSy2Mf2sHmlfaEtA25yzLopqLxPVjosRbS48iBRt4TEWtY0MVcz596qKWNaFcspiWYDVEJ57u3SujN5rqtRdLv5PrhQ46GGEi7a9TvdwTHbRUmz0xzFGdXdUd0cGIqq7o7r71NTdsuMKCLi9sCzVZz6J2VFOH6L4hb9y8rG/WCvSj/VFo57vYj52VdTvc35RWo3E5iSkVR+U7lCpuSDo+ZzDhJKUn1ugdPAS8Qcs2fmiaszRwBgxTDQwmoOWr50IIOC8wBOYlBuyiUni5icSoRgMZBXBEa2EAB5/d6oCPBpBY7lYuy0tm0oKBDiCaa6c3kkUydH7sgP/IZAIFAjlxSzceSjlAEi2CyyJSC0itS2Rmh55HdSPKSCfBOvkltcgPEJ/oOr3bCZDGWDrRnybZK+arcaVt74JE1Msu/1Snjm/zFLPJun7+7X/MgZHwEgMCraOiCMijr0hDgVRIbxxgjdN8TsnwYUYlug9Awm84X2WgDUzeYcpZX3OpAEumu/t1RBVsd6HYLgtnrgLBituNfKokdREHjXyqBvC0yPzGG/0z8s8lvxdF0Vtc14tLqfNEnUHdxteRan/HiGGYku9XznW1vdVoeZ98YN1RHtfM2ja4vubR0HEqTDEvXLCL8h/sIVLRbW/zdulQm0YWGSQiIkUmLYJtjHjz5WEZd+oBHDYt6emnMMh4wMSKlOkiU24DyQJ5GUimiEhtCAJzCARWyV0rD/Tp7u+RPM6R94l4D2W/WzsTwVl5WG709z39ZUnwShWToKCFXDHC23fiTYwlcD6Y4NoA4q6373peOX4L5Q9QjYpZoJBuA3OelI/OOfmF06MIIPwr5ySvhFXTjFKdjKXAYzpE0yn63wrILJZe/3LoeEgd/x1Bp5H0kEDphdrEU5Z+ZGm4c4rmIcTqn3YMtWPswGeVbWnak3Mmob90X7VpnOAsZIWTkB12hQM7HtSgas15RNDvM173ZaRqwsXr9npXTP7JoThf2cYVZKjSuf5rnR33ig8quE6xtyhHCcSIlXlEYuBkVF7FQMjXxUY6XFAtWDKTnwdAT0C+g8L6CmcKWnwdKzUvSrlXl70InpGRzyxdzwR6y9EoNo7ULko32snQFhAdrlEOd8uJ5ccfp6o8Y6VoHzD0TP4HLg6Q9DKcpLJeJwo9d3Ow0IAB52fqo4zUZPsMdFXFHAj6v0BM/9wH/d/ro/z+6lk3mnahhTp6FUWqKhXpFmbk5/sqvF28X0by0dxKqLf/YtTnXlR/BhINk/BbCtGWMhxjsXZ/PDo/O8MpFtWFD05BjXaNyL+iezfMRI/8tIvvysMXtDc3YgnlMMjxLefSDpIub0rqHJInRR/bEiNdcr9ZqQ2hO4tk7eYyC8ShGMThHBkVAfe3ZTez4OzNkSCtJGJ9p5R3t8wvdT+Wdu50JjfnBunrpNJ6v62WOKYQD2izYg23wYffYr60xLTng6LePwU1JFLjOjup1Nb+i++HHUJGC043IqNS8qxNvdW3dPNvFunH/chsGCyRDhlkPgZJzWvLrYpKRiDRIxJCp/7DI+NjFPEJG+TcZJ7XQiaY7AeEwHZCuB+czDVd75HQQijFfyCSEqftt+KTaydhv9eebkmx7Yb/m8i21jHPuK+IyQ78mKnFuw5aKMtbDj3eYMnhb6nqhIiWGxZCFENdELPwAKePNMVOaiIRSIH9XoOii/p05ikKAEikL32WI6wh2BcNCrrN76nxKaRcYko562gnCZSaKOCXdgScwt1XQWYO2/eXFUB5ueo+oVbUwHmpxlbcCqcyVbuNikVTehzs93qycL02GUs9fk2drPnVMIw39HteCMC7zDI73QyW22eUspSjEHOEVl8gCDdTkhIqt+cL/WPHC2tVV2zF7WHXwNbzspVwEosjoismVfWBR1yDkWfKpsqXWtfE7BTxvY1B/icA5LC9MMJJK5UwH4SUynF3dOXxiUHiTF4fgeSkCTRRwL6KuVsj6rLzuLDDgby58PePc1z+zJ50na2oNxT87QGvxcBXRsoujlFc1qyebgCArCJYCjfhkIBNVwV8csd4qQ7+vfq1dPYix9aJzwRJBDAfPfys8en0PbRhJzLTMr13nR7K8gwyO+l3NfnPDLw/BlxNMO97oaUC29XkM1xQElztKBpM4nLfnM7yyyieakROB3Ot5xUB+NLyRTkUWEdtUdvTmHNdNb/FEEiTsX3sVf2ssHgtH3za87j5PgNQ93bWu0G2fVlGLXoYRvnNwiVJ9q7SUHazG+N2j1OlwZ9RqQZkeZ+yqg00JqvKPEFIGQ7fd1Mj3S05XAFGWrWzG3vKSJz6i6vULncnbYnwEizcFoqzVDsCHGavauqMsg5WMC+g0QDbGfERREXnTIDZ1YclGWPJUM2StGdRAxNhaTPTkFxaZOMAxGKsArTQrKBIn8R50Wct78UlS5WauOi7sqVG++xcn4oJ7qN30M51ubhIuMRL2FkPF7MeBRMbWO/QSI/jhx2igxUiSF75Zsi6xKx5jFZFwevtbHZ4bn4nXij6ooqK7/ckisEMF1sZeWXw89TPd5Jexh1QvJk5ohlw8ihRVzzNjm0BJAE4gjAEYDfqogBuWCFSobWq27TkIKeefPyQvc+jYymAPd4IF4vxybB7jeb5ov0sC2OI6LpiKb3gqabnEAErAhYeypF5VDoNhloks420nNpWhthlsSm+e7tqIAcdo+S5RQ+i21EYoaS5bmQg215mBX7yXmayJSu/sgEM782JS8D2to7A9hjpx9aG/JmFKcOECABMEqcpoKkkGFEXOCTFaOdBozIowEd+WfELRG37BW3NK+3vB+9lrhoTEihhF6ZzBIpRVQUUVFERSeGirzYQrZ+gbPPCD5tw4s8wdn5So61WZFij4HhNTLypd8j8uZ9ENmRvrfcb3hw57cAz2Ei9huG1vlBnjCK8YiAGYbp/lQnnd9UnPBiF8WvvGYXhRDBG01z36V7gjMJpg9LxAVl6wexhOQhl+UPlDULY/oE01uGFojsmO4BPgvICMDXiDzykMXtwXzfvfZrLmD2MGP0iZd2tQQkS3gjqYc/PwScgwI3ERSmwKVTdD6XF+MBYg4fdO9XBb4ykcMrKUbBIRsu/D7rZ4O8wHhK7+GcQb4MgM6SPt0xumCQ8wsQSjZDVZ3CaYjOQ8YomwZVWIjIdf2VX9GkkKUiJgIwsdXIEQllAF/TQoTOlzeIBkwX8EHQB/m/8ctYk2QigCjkmod5DgGTUmXA80zCI5cQdcfgyqDi9rAF5KJgcAtOKkVcXushxv43mf47RJLlf1CadY6Sh6LLKro8THukrOkBn8UNJEXnuE8csisGFt2fBfkHtFjiRux6e+BEIbILVX96i4FVciLeOfgKCHAFBUxCI79vUkRkMEXbmLbk4Y8VZbvDYK34Cj+UmGSTHTD0rsDYYMPwoDuUSDAaE/NHx9AhYqEvblx+zmiWiws4pwyOLKTp/9wcUyAQWVw4+L5752BNu9ovlPu4YLQg6WVYrEBEhHutN3D+GXS8ItS9cY+QzBuawFyoBKI2VfEf/73C/bfkkoEQujW0YAvf76WMjSNE3usVEusgbla491bF6wVgj8FERtutOwZtAS5wDkWy3KYuGFtA8RKytpG8q1MXyXLiD1vcuAhME4BVro+LgqQBYpXSbCIoAws46gJgsUQsvQNMrC8pfUSQd47mS8BkUaXNI5/g7ArOisUCkUXnwBlD6QJOYFKUzkUbnOLA85AtJmqd15AsnGhVJ7BzyBZXMA/332iL1MVaQL/HEwMCXqMMiRvwfAkw3jBKp7ELeE/ljM5RKEGXK8nl+YOsQKVyn3zdDA1m7DuEBWT3BfayWGfytZJ4pVc0A7uzo/kSZpABLOmVBCvYdZgfQQZ5rhn5nXKcUcIphu8oewKsTEbgSxk4h8k6wXAk690E8JjCeVrOnUIMMyjYOjRSwtkV5GhBpvQRkhBmxAvKkFhmKLkC7BGS4ASXKIUfKBcwnSAB6+xonm9nGWQ8aENQyBNTDlu0yhr0CGE+xMF35IjouXTOwyYMQz5RxJ2H0LCSIT8IkV9KuSJk/lhBdgG66KLcpi/oeZjybbbxHaUiNH0OOUeUXCjoC7ysetEwBbl504ab+ISeG8oYDv/yFyP1OJML86JUSX9jTnGHwqihLAIqFZ/VlEP2gAgXirdXn58zkME7ilGy3uKVFjqRykxFFSbQwcgh8k1AzpdUhCu4bNAf7cuLplvgBzmYIYzky+8r5dOhE3p2TmlWwWKXc74LbpQ9ehzuvRoqDQu7lMoLVojdLaOVzyumEDB99Vu0wuF3uH71m+YI7+KkE9TIvXIir0jt4UDWTqaRIphew9ZptlFxOHdbQ2PY1hM2FXwBU/giauGiFi5q4aIWLmrhohYuauGiFi5q4aIWLmrhohYuauGiFi5q4frUwoXUZ9vjjFrbtYOOy9VieTMc1NqptuelrXVq9ba0Sa0RpZbIA6SO9seXQPEacTEWMNvGlw0jLs7l1jnObBiCErXW6qVwCvzD+PdyTEX/iRC9qafLoIZg4uneS414p13Nqitl9sq49p7UzKtZdcxcMIDwyUBtTD0e3Z7faLVxlRmFso25mwhtRgAs4YpR0mxLHmUcwrFS5k7a1eD6KTPV+0TULCrWureodMAeU/pEes0UUJ5J77tRErKeJ3JCif0tXrOLVr+wRJTNzrQ1phbH0PXtmAc/UvD9UnCHxu6Hsro0J3hLwiNcBOmNJSzxuA97zzb8voX5fKLrBKMta3VyPdKWWjVu23/c0MtEFtXVVfQrQ6TnWlv9Fu2Fea8lz6yK4lFEiwi+NxFtF+nsbABXxv/lEa4t/ANJQjUCGqS0kNm91dSDAH4svrvIc8g+7xUvv2AWNSruVRojvZZfTuFM+aX0mxfauLSkJ5OmrFfZp+JY2qZnREIm6UB9dZj7a4xZdC5St0jd9lPGqwFR1sV1MX4LHB1U7HVh8juqOMir9VYbq7TcfZRcUToNSr9ARvFWEkb5m/PE/MgxkfWd7TEs7RwFjb5M5tGv6FYrK7l2Rl2zuqwZR4+gQpZedvkugQtRMom4OxqPthdPbDfMk+DLT4Ajlc4mKRSQZYgAASNv7BDYFjg0uWbbz83Ql92pioX4PXVwIw8d8fCe8XA3J9zF0XrQhZfpHRp3+irMZKvaI+ZH56j61eF07MdhOk+CzJwKhq/LkfelAupbEcZaPmJR/bSbmL4R/XTUvA+K+CzgKq9rglMhaDZRyH6bwuBq+LkmDjb6Kp2cT8JFUG6iiU3YOhWAFf9zaK74JMoXy+iG9wzMZpD1Og9KrgwPEaXyyA2+NZdOs5V9Crle1q2aVxf75g7qkXGAW6RM0ZTHTYNtHNzstsrz7PAazb6rAp0N1A3MWmS3vXnUBO066ceJTjR++DqvhaAGx/drIsWnVGq2V/7U4ta6eDSLj9qee9pYCb3BeXii9myWIDICkRHYCyPgkGpPpG6TGLbz0wRDHV9Em4J1fhp4fXds3kK4LTQbUgErkbAMp90kC2ZynC0DApIsm773fYmAFYJ6bQUjFModFFKio6RxmeQx1YcYxAPhlq/qVDdWnurWbMbC4RGjHrJIiLq1+lb0WbXIKw2pM+6ShHg7osyTqI3RXPnpt4L7n93N1Tv4YA724Px1vbqfuESqunplWrW+yc8Jcfo1Te7aiiYtjDQy0shII3umkSVN2islcojF9rVHHfQaxiRKfphSigXKtxEhhBl6qlJEWRmw10DzU9fMCply9+wV0rANsIU4hjOqYGixaBq+PCsD7sowJYsHib54H5OOlrJIqt6qpezNccTBmrDhjAhh/eBhMKSFxPaAuqLSPeKUvbO/8od3NJcK623YwdwMPVV28KScnH5Q1ix6VEReMeL1n9urqm9l8pvjVrf05zg2h/pqk3tkSiPy2j/yCmo5Fb96udxOd5ksG4rL3gPXt4kBB5wjLhquI3nR2OViIesQoUZetLkqcnAEHtCgmrGxEnnWsyd70TFWMVwBAdgn1itoMJjRFeg75iCmbo5I/W1ypJTcyxsUU0dE4H17wKvz7ZycRqWcVqdjlj2mTzsohisges5lIWR9pBOr1yGn1HWAJ5EEpJ5lDP7oyv8RTvKxL7Ghwdnvm5/3sdyeGkEWL+yLPok5ySN13yd1t5nHCFQRqPbDMlpMna8mn8s3tZ0VLIbGU5e05DR2TJ/jEFpfbJFUrvGxohxbqtj4uSY0rVw5u0X3WHegjyw6fGMand49+BXYLylOYb91XMgwTaOYHXHmj5eh0YKpqE+KgP5TAHpMS9/KC7ZjXW6XO2hffJdse0zohp5G5BKRSxRnI1CdJlBtUWigCs7cXF+gJFW1yLiEoGfBZk6p6HcGyRLhlAVMCC1K1BHld5h5VtPTNeKhiDyDC7ntWvYVSLW67LN+0QlXJ+C9jVeIJ5jygsH3Mr33NrcyrX5yrlKCO9ez90DH3uvKS53ccw5IenJ22nJaXSosZ0yfKM4XoXGSGI6SKV0scNQARH4qBnO+mDi+sHi1jWnb+LWJzNrEtcYyL8It9t2PNz7e+H2FWl5Lzw6YXtbguYkpw/oX5yVEn44/u5cV0VNyeRB5wohAXCvLTmvOZVdwzicUVfomqxR58fKGHDXX5du3uiCuqNJzThj0tqMiPKn2ji0iYMqiI6AFyUdLz1advefmmkPxOY1MS2e9jemk1EC3LAkuMnKCriISDOjTXjLUJhDjnWxKDRZD//7kknbK7elSOVT98So7cL49dJcAeNpgZ5+zDzu8B8ViK+ywUANjzbV9ZHtFpM9CDqZW+89ZR+JlgtE2scGyaCfAbtA/IhAcI+S319p1/tAWREQn/UFksRf6vdpvTffvPRJy+W2Csv4jpcqzi7zBy+HLIPnWrwz23bqoRFdc0QaU01nTkL+hK2ffCo/bvAWuPhbnHgiDnDbxOEyPfOtMTs8EHhEBGajSiPeYL6Eujx1thNFi8GN5CSNjDetZIffmNaonIRG2a1+3rw53E4pl6cHlijfBhYX4qQYV8kUq1+QhEoVIFPZCFEKa+MNZBbpZ7hKxbIlOTJQpYFsGmMqB7dDSvrHpCwJcj1K//IUBrm3l009l8jsbLCFaLEWfIg2HDMG9qKs2GOZ3rBa7IbopjI1KmGofpGD0EZ6aYuzkgtCCW/6SUwweRvj86ivRvggVrEYIbfh4Sdd7SgqxNYVL5WgPneMYJUfBB94TDpr7T80IrbepM0NZPeKkxK/jkhexRMkjgbzX+u6JTCbNpr2GcXihyJ5YlyOgGjbpOxKlYwnV3DrdGaN/FWzg2DeBWR1EFpTDWl90rn57Pu6dbJPPFszv5ht2DRdQk9mNnpx6pE0E91YkPHxSYfYg7MaaAfYI3wR53FhY+SRqE1OGbPXNT4+XXlnt92SAvbuWaePUfcjjCgiwtXNpCgTYk4dpYGOVpWSnknMAo4U/T9tTSLzq2T1kX06vgZLTL3FKjG6vO6uzUAo/hBMqHC+trwB4pwpXR4KaHtIwy53oAhtrRJ9+o+D5PoQAjiQkfoMzBmJmid2cxk+bYL3Oj/14lKTDk72JU32pVUtkdyIozsUoHr6uuuqtC17dQX+mnyXIt+LIuBpoM2P9G5oYgewepKjoVxNWzQPtQh4Fza9NlTevpE/zaVnwzdevi8Z1vUGP6HhJj4RV5tNBGO+2X/40yQ3jux72tfelvZfetqHsKCEUH3TdLf10z9revDrWj+avwMrhDNQgQCR23nE1SWNGaWeI8NpuGp/Ra+z3YGtjEt+e7DtS+lGA+wmlDqGocUIK+HIXi1yfKOKEmLcOk6tLgzwqYoc4vHmSUGLtY4JzE51GJHpwJNo0mv+U2E2Hg6BkuUOOF4aSpTfBS0qTIoNE/JVT0rdmwJ7LaVk+W7sU0LBQco3IYwzViF65b65A4BxgrFYYUxDZ18GHH9sFcRqIy5OAvcQLERtEbLAXbGDf1w2JrixeYZQioVmjXTiGc6h/ZjMOBGTwFJiFyLScVOkmQSnezrj7PUbORgT8g7Bj+46UTRET62A9nSLHFKQTyFYo6RUHSw3IcAUQLv1nenMDyBD50Ht8zZthoQ/LMpecQZBNfjkfvanQUUV9OmhOjJiNxGDvxKCFktt1Opq4so0hHSTWQl07MPw3MEXgndZdbeb0Mzn6XKu6WmGwh2SvPSj0KKTt2OncfNx643Ic6bMlDE3hszjyyS5r+89Rvti4yna6IRfIvr7uq7uHXQbJ32YkEna7bgJUG/94jt4TkNk00gVsIh3bWWoc5Ie2xkFK2yBzEXvwEEp7D8PvW8nQb7bJUyoMHUX6yMW9UQsLJZNiliERgTcC75uu9iQpcr/Ba2k4wCzI23TwThvLJ0eNQbyue6+gXFODCFQRqPZR/6uNpWXbZ4oS+JGKreIpVnLwOZGjbRnsCazgnLLsjaQjK6fb5avljOnTgFwwBZw3/LQSNNfz6trFxqg+RVTK0SnuYz2vrn1sjOozjZAA4sQSz6gpdSZgqgb0eZEhRivI1ifmumpm1XmJ7TG9qnfuMFhH+TjyRm9QuXMHCh4VkxF236RiEsIYtRBB9y2C7j0QMBqFIgC/XQCGgkWeN8Lu24NdBsQpFigwMzstLRDboMFgJ6DA6LX+pkwDANglLUiPPtwnFHhoa9y3v1VNpXbbxdrRNrdD1Vvq3DaFcfSsrTe0FZme3Pfmevp7wnO3FGzBznAu0Eq5FMlrJK97suFWSp8IUxGm9uUXYJQxEaQiSO0JpFwlSQSsCFj7AqxSeRFhKsLUXmCqUipsL/QwV5yoZRHWJU0E68rbYmgrNZeMrgPsvwu4lTdVZobarlQyyuUn9zdSkt4aw5+4HuQJaRpKgNxVV1Ad4W7VeqYogzLl4Tb3R5Rj7QsEidhXHctwknLeVY1ITuuo5XFTSrwxwydXucKcTZem0x4Sr58DzhGI/UDcABkfVrkDCyhzXDGKt0EsOVhAld1KjndL+fSqgD4bJAVjkIgxSeFzn/OIoZaRzf8hotV6Lq/iFyTa97w1IEadxWu37wAh+cMvSwjxHUpMxb1NlPJJDj/P9XibUtJcfuaQhdzCEZtc3Uc/95KBBfzE8HFZG8RlWp80wN40orLKlX09Ne7dHGlnpAXEMBEwHacnFiJSz6ujLnFkaiJ2fZtMTStFpAPw/jyR9nWOkrZDsSKd2i+dcqhCTKAQke0RjI8udvMphS6lHnp7VleprX2sblW5+nT4HTsBW6AUSWR14u37IVid8hr4uRxNY3e0B9m//6ET951A+sIT4gArRB5ZlIgkj4AkLdS0PUIKixNdCc4Uw3Mr8jHJi61KwlGRnyM12GZ1MCSLALI4kuHpLTJbJ5EkNnJ8EZn9FBwfJZc0yzEUEdQjqP/gwg1MCtZnaZ0TYt5r1qTFkIT5+u6csJHrj9jjAFERNnmKYBXBaj9EqSIFLcuNfOk7MNtG6puDmVtcI2kWoNm3zektl+kxRDtymfFCnxCX6cvFwtE3GLjH1sYsCgyYu5IMYOy0YMAWcLD3q3vI5CIH5Fp3Lk1wIMt9WClY46iImSJm2g9mMshkDygkEGVpAinz7YIoc1dFDQQSRXqwBE8+voOSxbG/+Y3S7IifywB7hGwv7rz2AbXm7GxluzeI5gK+V8Eo3sMg4saVqlZqr+uAbr1bWSvMSXbZK+whxywBecgKzZ4PIiIgk2hvdTgVmi/7HC0Cqul4kd7SRVLn2Jm0Tw64oelGzlsg7FJ9PVigZP+MNl/Sp08csmuahMvLHgjy5xTjHr+OxJTKIFAYEDUO9N0M5JN2OoM2FHABSApY6kICEBBjJFz4WK5nDKX7Bw5KbkA+1XxXVGlEweGUVRoSViWbEsE1guubANd7uEDRCSdC7FuB2Jq/PZ4MmIAMMnDkj/IlyOEhI5X1B32wp7IX2WCQU7xeUBdYEsQSbBRmOUVE8CgzHkxmZCBFBb8JpLRi9NHvSDJHOBDjp37zBaVe35TvPcuwGvQ7I7rrEce7kZRM5GcjaxcJ5RsglFJ9M6EFS3Zi6wqGpzDLcSjZPRCCoVnRsN7V/Rl4/g9jA9gNqfwYltRXELJv/m1zjByRuh6EujYsC6251zaA1gY1tPVtnV2lV49ndxjOyFZnv0CJ7VE8tw/RryL2jGsoc9sjbLXr3pSttoI0MiORGdmTR7CjyYxwFeFqb/n3XZVjBK0IWvtJw2/rBtsJvh0tXltTUOnbopYtatlOQ8vmaLk8gWC2Pipi0YhF94JFXcXRiaqLlC/uZ5RCuo037koNtP1xC7a/kJxOpXFOuYDsON8ChaC5qRe5Hz+ibrOYTkXPj/Q5TGl+pE9lhYDpkb61ZwfTbgDhOUzEvcRjx/jgK/SwL1fBFoH0lPVFbGMp6960z9kG83ZvCZUeVU8JRO2uDoVi44h8tZzu0vlnBJ+2KhmRzs9XcmwvuO+YoC0VeVY9jWMhJS4AE3dgAY+zSmkkkMlQj7Q6INWekyVgx/ngSeGLjjvqgzXPltig4TX3lCfZ/q278d7Y6RuYIiCrQ2+XJzSTw89zPd7GBhxyXokGR7KkVwLr0V1bQJEi6vDMmjd05fA0AbzBvAP1OymGBwkMo/JdrLMzIIFlKINT1egXIyHIym7fmkRjAYwumDzWVcNmgF1JIwVSaNERb6GKS4AJxP2iPMCzIgv96Imyx1Cm6LJG2wQmlKT+Qm04aFFLliAXrzKIBnUWwZpU8ip3zbZzwZsFfVnNbspA8njMPN8YkEXhoqdtblBZn8sFpQSYPOVOY3lSnfcG8Ss4BwUWL6mz1berkjqcTk8lCToHLYwV5EooR41bdqTPN9UlXfEliLT0oEnTAprQLAeJi5AzRJCL3FCaSgXJvqNP/FJueyGzAmExJq1JZsCNM04KLmjmNBFZZG7vE/drA9oTJ3AF3eBoShpqqqclJJ8RRzN8wHmqDyCMxHq6ZJAvKU6PGUq8X5F/m/DspjrDczS0cTWazyqIfd8HIvWNRt1oz+97Cx++/KMSSaBEFAyOyZ3+45DfkirVBaMFSSXDrBSsB/wafBaQSXJ0hG/l5hv3ZQXqrTlqS9G632hK9gRYOnlE+fEJj9yJ/r4uxcJ/L2Bx1Lht+dFLiyM+5nenDBCeMJQfNXL16BH5h9Cabsd3QCK2idSeI5c3UgbJvZMFrUD9xI6ayyzPIWCAJDvGpiWQiMuyoPcO1mWXWLz0DXPK4OvewBXyAmz90heUKoAXb0Ixn0MGX7wAwzVPgkl5fDy9L1GPlZYnoYxA1uE+2WKX2ll+pBqsyHxfsPUn5v4c0WX9bMAxFXwXKK8NGn9icD74bfA/fv1TCuf8V7m1lEgXVMVmglJm7RoGGaMb32WLQl3j6AoyI3h0DVO6uIvqtm0aXrOlt9u9H2a52DDoqCcsPd9Auo7BQ9Ft4/Tjwu9CfgQRUiOknhakgoLH1AURVN8AqI5IGgE1AuobANRSHIigGkH1xMm/0XREaI3QevrQ+q5SYsSUWxFq3wrUjgXMIrxGeH0b8KqcZy8hxsqYcETLZM6gVLcf85O1/9mPX6bE8VRuuxE2/BuiJ3H0JI6exNGTeI+exI4rrydC3O902xq4mbIfxCnWtt4eyH3Vdjndj6PpBufQdrK0cNBd6XD5GjdLxzXS78QYcjf0Owb6XPi2d9zzO9u1NiXgFueNa6oc2Dx8S8PVzD/CdQrbY+xjyyVqF0cox3mpTWUcN6PoXBSdi07Buah0CIpuQL27AVmuO1HnEXUee0qEdufmHIggFUHq1SBVOsNEmIowtSeYMl4rEaIiRO0Loko2M8JUhKl9UT7LDySCVQSrPYGVz2EjglcErz2Bl+tZEQErAtZeAKvlAtHWw1vOCu1Ox62gCShyWtdUCAS3STyG9Ugn5Vi4LNHecxAeMWvokdOv8hzC9DhpB4+XyLGXFIC8me3YMm0H03t2Jw2tDqe1TUH7l7pX98ZZYdOtYnJcX3cKMDGj0h59lK9xAQS8AclSmsR/xDzKP+/tsgHJ5yrjnPuOaXu779kNJWJ5CTCUhtCt8mfKH5wn5S/sq7eGATfDPSQGORuIle4FIllSvl1WOjmjrqR0ajGnNWU1pc5EehDDRMD0yuSaP4Sz48umbs9s2xUc0mVz4yqk4xxMqHad20se1jRUACCl4pIWxO/voToxZVP6CP31AVLEZZLcAJc6A6nX6eyASSFfBiHWbncBSHNYj/AxR4yLLxA+pgEyeAxEoWucqFsTvPVRVo6yck+xBx3wawfPaFYjRs9ECH6bECydOofp30GiXC+JWB4uz+A2FKHibXukjjWz2uckEOmVF9blm05hCqHEaUfiUTRfjySm35yrkSOyaJQkZoo0vC5f4/bzhOlEBiqcrhhVTW8bWcod3CMclhMakROWUM3kttlYe2iP21ry//eRfYrs05tkn1LEpZJyG9qg1XJOPBSEj4emDH6NRT3rTo1FY1iPmAI+54Ck+y2O9SKEdVXvSZT6Itp6s3oLE4epKG8E5AjIbxKQ95etwvexneygpZmwHbNcWuPaYmvD5tWmqB6TUtuI4tp6fg4Lj8eW4inc7ho5WtNvWh8iyosob0+Onw2rQISsCFn7IaZebX0bs9pq9HYSIVu/7UkxRIIEydIIe/vckPYmpbN0qDtrTn3KzSC9bKkNgyMtfd6mMcF3tZRY8bbH276X295QLu2mUvIob1rg5mpV2mgkoO6IAB4BfE+Mkl8NEQEsAtgeAEz5Ak9RBt8znfVukxuwQBk8XzClLqg9gLMtlPtSxrRn/8/NhmPo+uXxk2RJ2enZKOt5dRkcGqP6tDesIBF7cZ7dPYmkSZwYzjDpp+UkDWTfxFchL/qkW3uDkgaKkAC9QzYvX36vr8b3v+ABZnoK8kgCIgnYG48BnwUDrwMGBnWUixfeTs4dXaOuLjRrjejTp0aisg+0YH16d0GS9j2FU3HGl7qlj/TpOhSIdzwbu9anjCSURqNkJApv0LoezeoRgt8yBCsOYQqzHLckya5krIeYlEyUO7CYsBMUyjrFqJPjD6uN7GIR3UF9CuIpEr27/XEC8htECgF5v+GSiieKdCXSlTfLGV0yGIN9I/C+ReDN6AoO1dN1WSynL6rIIEffTmMyJ+SDmQUN5TuYZ1wLSlud3jJRtDXxle0gWgyixSBSkWgx2FUidBX0/itdqq1bIoil0m71bfSJbiiBfS5BDe1svHbx2u3JGSh6AUXIOghCb2ozu3SYjp7xB9AutjR5bT7QUrF5FGuu7ssTRdNQSsVrG6/tnghCrSyKQBWBai9A5VHitCDGq13x5UkfLmS+2G08S4EeabuVRhfDqDCIOCUqDKKL4eHstgmjGE/pCebssmbWmbCrOa5Xh02UPK4/QJCaEuG92eNV0d8pfBankLws+ilGyhK9vPbk5ZVCnsAKW/aEYE7IpBltiVE0iAg8igaHsyU2WOTOAR0WyQZr2L7tDs8WTKIRzYrxBvZo/HHZj+a5aKVfRlM0RwbOc/nxALMSgF0MQeMDtTFFMIBwsNMpVle3z6gQNPPVwtq0Nw05dY9sjsruljwuGC1IusvuiLChyz5/PexrrwtMKCOQ3YMUFZvcwg86jyeUbqz3ddAJbFXi7qAzmCOMb8Dzl+BOWITooBPJuiZxLHjo/TgwWNNCXCGms35tSp6BBXNJi8DOM6ayMp92zzzovOl8zqH4W59bp6fwR69TKKWgqNCK3NieuTFXB7V/yL2ixQzDCL8Rft8i/IIkgZyjGcJIrLeJ6zgsW4fSFJJe2Sk9hS0MXwcmiNeULO4Y5DyilYhW3iBZHOZ5qIx1BN4IvKcMvGIJs53ihZVZ6ZXAyXOQuGq4bV9i6d5YpRl6+TvEOqcLBvLl+gXvCWyQdG70SpW14qDVhd2AICuiCGQIr71YAkMhIJu0ttLeIgvg1LSqSZhPft1o38iAgAwBvyfnCjAEiAgUziAciXUgRXp5c9umUzC7UKi0Z/UqX4KUPv2gqtVad/xe3qIdHWze9EL7ZnbrGanaLqcznXEGFrB/UeAGAl6wnSiS1o8HjadKfx/o7RfHuBPva8+d/elrEsbQN6X5iczkQln9+p7M4gXoWU/IawhARIopbhGQVBJ347lD81f4QomgqxEQm9mTrajFC3ykmlyQWmO/RCkD/DEe6A90oDPKUriT+F/ZlFsMvxKvjsuDNX6j51bOpN+dpVK6Ees+zXWA56r6kEC012nsrGJ6Q2y6LWT+gMuzxOS+GAlLGu9rCrXQ3xtrJ00M7yBMlUqvT9MPyAVK9jeDxjd1ni0kb9UlJQISMTE6qd4sTYIBCYAhAAi55xMBWaC0FgqonWyvmM2Kp6MglxRxAUgCT86HkMEVBPiWTJQTcq8AIm0eGIPnXmmsvjPdSrHj35hx2ivahnx5EhuSUDKHQqBeJ6E98fudgrqsd4wughbzY01lBRNB2ZCgrE8IVVTiCso6ir06Civ24obuSuTeECPLn1AOr4yNdGdrd7SKR6v4Hou3hvk870t7vjoMaj0CTIsEph1Y4nhkBATS/h8JXTJag2pfc/g2Jinsleec4Y3lsQ7sAiimkG9VA+LAOtTnyc4m96ay1Mox1XQOqbfz2du63qzR1l+r3t0vPnF8We8p3lxCFSaUAYFWLm4XMmTUblia+Dm7DUnbsIv+CyGoi+gxIi5FEHTRrDmfLGHyOKPPLZMFdX8JZs1njLg7T5D+vTBw6xAXCFiybC1RJ4ZxpkKzGW1OpfUV2SCptNOYQVK0GlqjpB2GLjbQwtyw8bOGGYcXWQaYm0TdRNbbTdJ0nzdaUNpqSCDGDSq/UEkqvh4VTD+gfpWgjcn0736tr9o1XAU80Y+l97D35bP6xKmc0pQBtG0WvzbO4yroHaZNblZiDbexyFMgIH+YS4QPicDu1csxWPMHrqJtG1eSCf6QwRQBw84eNhCTJgW/DVobjxUOKmfxXqGePq8PIkgggN/J2fQ6EUAILYx+d1vWJacYCUiMBscjqql+l3pwLn+/MqGaIpTsQTC0WGgIab+XkodE5xK2X03JgzEwOkSeCpeSEkqgAfM+A8MxyidLkPeKpeQkLqsIdbSbwie/7kpSQPNpV54CnY+g6w16RMdL+j0/kM2kMnl3TVnpCNM26yDyHuQ3fn4/A8+hzlfsg7oEKMsp0+Tp/5SJaX9dLhVaTEAOFA1Dery0WZnR/zmQZjmpxYVSnqgfdHoWaa2dIwKdQYSyDGD0DbZHa9p1IYmTJt5yk//PE3r+9dTmVM1HsrJw44yGeT6BbIUSOGJMiV6NlktZkehs8BGsLkDyeMtK1aRqMvHxKzNiSidaOWWepkDC6x3F2B4onyeC5nab+eKV3ABkgjDKWZjJVg0fAEmx+pFgEGTOa1RLuUGfAUap0n+8AwhLj1dP232h3gXyvDoA852BVHsnNIWTYiYYlM+It/cLcfXOzwZ+CVihhdx56ZOgvmX/OcS4fpIxHtI3VCz1vD1AFQ/xbR5idYAya7bYeIBcueagb/AdZUP1izYovOpN1VsSyuCvq2r/Nr7vHnKKVzCtt/xGw9Iu55LCOSiwuIGcSyXH2QDO5/q430mdgRkF5VmYMe/0qWQ5RjD9Ha5nFLC0PqeBMlVw+LHIIEPJQKcYwytoDTUtZrp8SQuc3itjfHno2xxt+xziDr5gB6vdEyjbAp+tAMK6ez3BVFyjR/mJS4BlCvqKAMp8bqbrCqyvjPJNoZ0rsNbCk/rzdyiFWNVwm8sR8sqq4PT68YYSsbyEavbym8MU5AKyekBZc0rxM1dgLdvS8t0pMMHu6k9+AcWTRqFpoedU9ipt0sX6Sr1oucwydSQTkEHdlMlp3ADB0LPcc0wFn9J6abxuHOm8msa793aufy/3t/yW/FsVJJJ/6/R4Z6pM4O3c/FFO2wfn8aRO+KSqU3pC6QJuJgsTzVVPAZOjzwafEXxy6PQX9Z7LKpNc2eIZ9E7HS1aPDGSwerqHcwb58o5ilNRjJjowUlNm+e3qQfd7wO9HWli1KGUcbi9JG43dhV1BjFaQwfQjFWiOkvK+2I/l9bor+PIOMsnSGa4rWcK0wPBapp2qL0YiPeTwEGPVXjVUTxgCdgFSBYbqoZqEvA9QlH1q+yT7pFPfqob6+xOtQz9Tin37DTSHZCLdi8iCK/ICUt9qlHqQC2dB3F6QfK4ns4JMDWqDUNztA+92tdMp4rnUPmy8rldmYL1L1U/b57e3t9Y8dCE2v21YiKXhvozcJFtuc1jRLP1cfks+3UNeYGEeJkIj8KvRu+Gn6+nD8NP0w8Pd/ejd+G+SJtWvN081VwesX6MUEoHEWvFa+gQXiAvIbqDSrCj+DIo7wPkTVfwaRwsyJtUfWqYyj7dF+RdMx2SUAYR9Mkbcn+b+1Hy/tKvSYjNJGhGVfjzT9+v9/fDjdPIwvLwcTSYSe4D1bSESqkjLHVjf6/snF6f4+TsMyDjlSm6134O4ea9m3deXgC8RZNpQoVr0nx6B5Q1NvJo0Avn51hMfKnPWPQSpVn1gOAb5ZfnrdtMVzCFJIUnky9rdd0vAoaf9nqoSgu2OEiQvmCT69S7p53s4L7jCo2bp6j2Ds4F8A80yyJLGU313xiAfYbQwljrdoLbLML1Wy1gax9XjXcESuYRLmq/dlne6dJfT9h7kbsO9UntDbsbdQy4og9UN1p8XQmbDLh9ddKCa7gATir3SbLdqu4dz689qhNU2Efqi18+UGXiT4KQPun6uPHSlXklRL6UO1fsuuUGpbE4A1h/+gp6rnhmlj4gs1HcUscaAczRfX8pIybNBosr2eUBJd7gnp9u+UPZowNqauM7djJJHKKpvIc+BSAurWdSIaNupDNWX0adqkSCrfp4zJNORyPtWtakj4mq+E4Ahr9+he+4YTYuknEIbR8TrFq9bvG6HvG61Sl9p1/lWbJYBKcU0qZ+5XJVRYteN5c6Z31UXpvHbqr35+ysoAMIw1WUQhmU6LLe5Hi735J4+KRFIfmFEVhDTvOLUSjtC4syjPu96CVVbY2pKnLY/3mAvPBaTuL173t5qawvkk6YL1JClh9IDz9pJ+Vihs4lxTK/7y5apdHw4M/57Z7UHe5eEfxIzqmYzY/SJQ3YekKIGpv9B9bszvNBdruBkNVaztdoqyV+nd+jap5OaWT0rwOFf/uKdj+5p39g7RldIw6nzoQv1g9IsoZ/01dF/f+LqN0oSWVe2x79ydf/kf7elO8Q14haoXNMFItUS1facmdmVH1P3RXM284Ik5S8Rd+ckqPvccVhxW5qQ8rieSejN0Ua0/rscOcxRLZ3WLTynRHGarOoMn8JxPlmTrRxCr6ZrYHrCdpfB2eAdwrVF/R4mdEHQN4vwVE011ssheLRQnvpI46260TXHT2XIbMJQXiPQumkCF0boB+6bWDUloogOl1/X3FKu/pOf+Cid7cqHicEc5ZMaJ8yXZlAuuPP44n6+ej9t4dC3kbK5sYt3d9ejh7v728/jyfj24/jj+4f7T9cjqT3SXZPh9ahuUtJFhauGeX6hq8xOVLGwUvCTsg9Jpeq8FOQqvtsi6WWTsYSrZ7WRVU7Xi9vb38cf308e6qlMHkYfhxfXoyvZrSWU+mtKgBQyvuAeziGDpgnT5FE5b2U5hrKemBYiLC+bRld1rqbd1tmr1BHP9RCjv19LLx2ZmqlusT9QtkkRtNKlmrZSmC6fy/7R55HS5nnXPkpo5lmrqw98hwjiS2tPq1m/l1rW1jbUrdXAD+Ob4fXwj+HDZHT/efQwHt493N9+mo5kF+XiEmA8epYhfKUiWbaOjZ63ggrZaMRPi+5ZrcYOJ19/OZwOr2/fP/w+/ng10QL2MM/l2OoBQyOtGaWA3ocxyYtGSyXwm4bfkTqhuuFOS4pO2yTRDLujDkmQMbSMQS5fW04Y5Dcgz+0bIPUEZhNrLUbTF0s2MZTYCgj5WGsfpLArW0pguBn+TSrdb2+G0/Hlw3A6Hd3cTSem4340vf/j4Wp0Pfzj4UY1Kn26AdXquXUsd/fjS3nj766HHwNwdgfWTwDjS0rmSG6T2TDH4dG0NXRGprU8lfJRH4l5MnvXarCAxHSUh1I+mm0xj5+IwbZY6mY0L3THqIqYIIth8kjoE4bporwYNfiYv6Zr/fZKL1TuXN1CWYqI9I/xtzZXX6mKzEUqGypEUjbwGotKgjO9vR+FLr3pHE9HNw93wz9uRh+n7d67+9urT5fTGnHXqh9rW03LhICcL6kih5LcjC0li4UYmn1GgfeJyI0lngE1kZUdoTe2BhezDEmVFZ3XpFVphhwcbyE0+5VWc22MshpLhdMnMld4EaZWJ68++BmyyuLaOsUv6FmiBYxKv4T6sQEAuqueiPNs8JBus81wusXsS/O5Ah3dWqKXL+hZLUTSdO1RieENIGAB03LJwKa1ylG92k9HdVuzLRg2N175tcyaJFe1lqpB6cAov6TS5BFeZLUWw8L1jo6wiYZ1jw/LmB7vfTT6RfdwLK2IEmmaxNCY5RsITjZpnMD1kx9cpIMR5cLDAS3rlb5jNHuP6UyptlETx2cOUlYb6agzDarMzYqtP99RZkOpcRUo36QUvNqWao6fLwGD6Qf/fIXvnMNceuQsI2cZOcvIWUbOMnKWkbOMnGXkLCNn+WLOso7ERBk6B3nuMwIPZOeD6nQ5TMUQkDmV3hA5JEOmvGblnyb+Rf5ZXbAEEPks/yoY0we5rN9AdV+Y8T3NKdZ+oHl+juQ4z+xAnj+ovlYM4oisEKPE4IRhnptPDfP8DgMxpywzrrkYrD+bDyvg7dyrvidTTYRBDAGH54m+7775mCEP5ZCm45Tkq+71GGVGUH9J21r9VEF8+WzS1EhiKFNtWEYG9Vyb4UqurcKNxiu8dIWd0muZgEOZAdRPO7f9h19ttVJVnPs8nfmWqPoeUiCANG82owZm2nKqLKIJwP9eQDX1O6hw1xeGFK1SzZeUpKX7lWq4zau/jCtsw8iT0EJHhTOAyL8XsNDBrP9t/tKQuoBCR9zlBVOeVv9t5qCGXcFcmWYZzKjarCLncIOvwE+/G9VOzBGGXgStO9zVOyZD+SDZIBskQSot3f/yF/Mw1Yx7NReuh68qTPSk9qt9Piczq9rWKum219SqOjpmNJED6iveOHL9804r7zG/XH1Vks7zgnlRoux7kH3uty0iXdPlMqhXt2/kGY732Tp0AKNcRwN7vll3uh9dAl6BUQVRDQhSrZ5QhcN/r45vLatyNr+jO1oMBV5fMEDSigDdF0SGbapGI7usywcd22UewifazxTcSPaZHHKu8i6eZ2Cb8J/LSynQTz7dvxtejh6ux+8/TB++jOR/kr3SvdPR36YPN+OPD5e3H6f3w8nUaGWJGLJMeSbdDz9ePVzeXt/eP0xvfx99nFSN769vvzxMPgyvbr8otzJg6viV4W/q3RfDy9+v7m/v6h/LI56UyWOUZCcY4KaqjIR6hlZQz6EK9LQbzW8brQacdNMEJlSGNa91n8Sj0sNNCkkqCJhBrLI/XhcZIkYLIDPo5GoRUswap4hKvlNYk72dh7IMxLM5lbOpY0qXVFAv+TU9HTTHE7R5hxLLa0gGFIMV9IzLkbINyP9Kb2E5f7CCU3qNZkyzzB2hsG9m2vWUGdTheOdFjinwkoRqzIMZ4y5DKp3HH6/HH0cPF8PJ6F/+8nDxx3RUqqM/3V3fDq+qpk/qDTdQLGlaPdaL1M8V6tXa4rwQGz3R3vA6HJ7zXJ6iTnnn4zwfTPcG/tOFnLLlHv4dlsquuq2coheI1KMyVVAmNXo6w1DnSbzZVdRUweTV8LJHZV8j5ZhprmJ5mrk5PsKnZpPnJmvVZZ2oTJohy6dwPHqV+cIXZa7zl5UvCR/bz7Joi/YTARLhRddVXzuxHEgCy/BP1QCkN/5fJ3juPJTTnGPNWgP+6J2c7nBn5vnyVBYQ1f/x2mY+q/7SoNEJB7Yc7V+BKA36G8SEt70WK7tAiui59F32C3iq/8H0N4McUkR1Eucz/XCvhmlrzCZ2pRprZN7quXawtprKNdVNxopbNXyRqSXKO6yzelR/1L/376ZklqohcmvNHHj1qDoV9IOChzacQWO34pVjN2DWmytPcJpbjcVMu3uXO2lJyXJJxmNc/V06jJsHmnvTRcQDfesHapNZzAM0FvPueAn78R4aFkY53UhthfF0UM9mj+Xfxros/yx9i+TfpYVX/t3MFDK+HGkPn3vlcpOoLI9KW3xbiJk0KE7Qgig7puekJtNPHx9uP17/8XA9vhlPh9Px7UeJFwtG7mVpK5VWlz95tc/lZKSgqCXYOVrI/Hzyh9xuSaumFOrDsTchDENmqTJxtMqGtgS8nBUG2oXpdi5dqNKqGelm+QYqu3RkCJTScLkNDJoALqZmJadvwrsCQCgz/lUbyzVqvyk0WudQ3COyUHWJ1JOKelHf5eqDZciJeqhCTsyTgV/TWEJuxS11MoARMiNkngZkWgnqns+TJfClyxg8oecH1ddMBQqwVNiqN1vR3GV7dRZlQ02o6mdDAE2DnmxeO4q0hlbrKXukFELarb4UfD/gCu0IQQkh5ykCDH0L5XIdmGEP9rBOjHNVDwz3VGoB1yilv2WF/RGA19/K6LzGze8MfvyBllYtS5UAOZf+GmVx6eaK1IiHakSHFudGjryiT8TRhqnWO/PzS/vljb7K37XZWFRDlY3aOEepBsO26eQouuUR5WNZWXMFsEn44Lw9NfOrk1jrVziq18Y0LYRNNM4ruc4cJaJgcEzu9B+ySaNrU9XwXYExL3NI5AyuEC20HqN04dAy4FU9LQ7ho/lvSlsouTTTS+ysp8QfkcG1ZYIAjXvLu1ptoXV/q7YwwEfIiJDh9+sJ4b6qz4WE95DOTYxC+WfJGJbPN5Qg7c7ZaKn3vuyY1hXZ60YlayrO5NrMYZgkBQPJ2mr64qazdJrVb803Jcu1sLJ5Npprt26PDYdWU7PeYZLYl23mfVJmLvLSczdNG58pzc2N5lqF2t67sl77DRSamZPwWvkp+nnRrP16FpylBsj2RL3aK8n6Sc2YzPlMpANt8qgVERIKvR0NQbv8v1xoVY+ltSV+h6sIphFMTw9Ma/pKQwBqepr5lgQSRQonINNu9h90JaXqWdclavCQurExZgIJp6x6bACc1aijcDyitYD5ByRdzNdOW/WdBuupXAj19PWTmXu3hAzzS+OfqNIuW9+EQsnMvvNsHo6Hr4n7fqx9r13zpbjozRxjehpO+aPh9fTDw/SPO2V9N4+fPo5V2NsH9ZPGhuvGi0IGNFSPZQIk68kEDOkWdwfq9tLLVj/ZJ4/F0sSL6QflgGtavtze/377afowvJyOP4+nYzV3mVJRp100fykPbj3n9ml5jsRsUPlHXVzHXWLplOvFcWAF63l0BFDEUzrNU6pOaJE/b66HhgvulO54nz9f0aQoU1Dnz3cUlX/KBZgxisJJPATyO6SiKBEx79IlpnQNJCsXv+68Q2V2eEXV6+IfqhbO+1xV8ih/bR5VCZ25qthBb+pwNsGMONYtmf60u1Aro9LHc1kTcIuUnJ+H4+vhxfh6PP3j4Xr0eXQ9aWjwpfJ9eFcOkdfi9uPDWMVfW+33o/fjyfT+j6YOSvm/q1AQxXO6zjpWR8mMju5vxhOZbuBhMh1OP03U9fORurTWCKztmn2tsR5VXdwdd3cc7XNeRmoFNNBVfyNnJaqmKaP+GXLCd2/ncxm+WMoi9qPBu6bJEkucCJY7RBb3qthAFRCr9Bmpkkf+rsohl2Mn+iMTU1hA3zg7Qvai4Cr7swlPk8GhJkDSfSpJAnp232W3C1jGn5cpGZEy9sBcFY5Xe2R2Q4WaYqAiCNH//FeiCICOv5f6cvVotkEt5UJmp4Bpq70VYp1VQo62/ciRSsWkBZXadK33J4w54/n/dOfvnD3G2Uac+B4SGZSuwjvKDA52W3WC1zgbZzrXuY4wdOii9IzS7kvPJeOk3/HX0jRav1LpJM0bNsLvG1xDHW5EzlNVdugceLMsU/Kg+x8A6jYbbb3CW6ILHTV+XzaPyEID0zbLb7HCrz/RuCMt+7eusBA0EJvuhoeiThNR52pppNdoppFAfGiF+FbsQ+0kKjOowHRK63wU3bfyTczambFE578+qYoHm/lEXU3p9m9/1DWVhokKn60zYsmqSjQF+hXVmmSzpDZai+smw6cSGO4AAxkvIfZiMn64v50Op6OH8cfp6P7z8Frn9bkc3k0vPwwfRpPL4bVyZnm4vL1SDOIlyEWyBCOeAFwST9M2RUpuMQAv0/OXKTKspnKqdVMpr9YtVtKrsmkqeU3td2I1yqAl7jTRyhB+NhiTG5gpVZKiWeOrMk1J1dEg6pRp7Hwzmg4n4+no4cNoeDW6V/qyGZI5f5QkbbyLPqpwJHsFH+kUZZCVj7fqJOU/t/fj/xg9jD5e3d2OP04VsHH+CNeXmJKqhLEsSzfMc0ZXoPJOuh9dDS+nKu2OzbDYiYzr1jp/tfmrqnU4GWlG/+L208crUxHqYXJ5e6eS9ozffxxdPYw/TqbDj5ejh9Hf7uqFV3unXS3tlroEQWuD3Y01BXRZq8OwPhOaIIAbadC/jP/2MBl9nIyn48+jh99Hf0yqRrWWf36Y3L6bPow/jqcPk7vRpWahyntScSmyzbkrus06uxIDf0HPt7LhimZACeOAy+ByOWOlohymKznn1DBnd4w+ryvez2nVlRi43XTHYZHSct2mx9xUyq6AAOob2j/Mvax2yycmL8CMo4mu5UsNmMwKhNPQ5VedfuhJ9MUt05xXKWPKRDsVcBsdWVoArPdnaE1JlwyT2zjBEOYad5Yrt9aM+DvEuJB1bNZf0LNJtYa4VFUjVQqZQUW+Puq6nVaPLoqDuAs/o+ccMcPT6h4dHFUVE1XpDq7AekxS+Gxjcf0+pS7RuOPfWfnc+oTsUBdJV2RmMAWJuKDpunq4lNmK4EQYplk31lCgnw2Z1lWYDfqEBnMG6FykGpFqRKoRqUakGpFqBKmGSzH4miTnf6czHhKOZEEUl3LUF6BWYenSVqWGTTYQStYZLfhnxKV6aGxFJMvuPG+34LJSsUFVslXO76905j69U9G09tfKDpMRz9Nl3O8aLcM0DY5ufUX5vdtzLiPgyl/VqNHbWdWGUb3qInLrqfxb1/LyvrLR5bxQ9aUX68ajmfAt0Qn0ZFfBOGV3YKHhqGox37+CwSU1u+zv6wtr7ZbVIMHYmoDOGmVmaP1Ct+uPtNs/qUBau/09FN5pOu32HLVqtUxPKPFhqH2cWvOVCcxswODO1zy99jfLFLcO4JgCx5a/vKQLTwQy609nDvq4bqAAMhnX5/+lW3WAS/n1slqjM73QEHuOpgRlfZ31Xns3t9llv0dWl7JXuqgPQvpe6BsU4l0jJoqYKGKiiImOjYkcLCSNVOcq/n0XJOS5jlI8QALyxkWsm50bE7gH7lbrHuVY1H613Wy/eoKE9deUAb4clnb9xjD+DmFRnrtqKJ2YkmrepZtQ+aC9WeWTDOdTr68z/Jpvd+P9uOMH3nHXEtKRxWOXzS4Te9QPwzQ1laJbbTr9jbcLuq2jDCDcbnEHlTZRq6VCF6bhGsyg+x4j7NUNd0tKPC3up+rwGKuNIZmwtvVN7kCT0+bCU9lXnrXVNNE+4hXVNO0e0lv1OJRPESxv13uZr8PTrnbK3yNDes282oC/TY/9NtWlPtbo0Fjct9BGT/WjxN6AKk1P/byolqrilev1lXHK5R0wN6v5rGepAo8avy7sGVn3TP2lVngnk/YFjJDx6sWrF6/eEa6ec+1MZYgdpUrLc2JERAkrsrDTBFPh3EjZCNOR5cGlW6Q+2qQ6N20ViJYFolKdEhtgpRJ1+6q6BzW0my6zCc7VNl3vKMta42Usp9NQRm05jcYr4QJgo0dtdfk+KHej1dD64GeUQiptMqoeVHMblEyx9r299Kn7/9t7t+XGkSRR8FdgeinllKicqr7MHNXOmlESpeSMLmySyprePW3KIBAkYwQCKFykZI312PmI8w37YedL1tw97giQVFZmdtU0XiTCPRARiIuHh18NxNnpLszd6Qpn7XQFsnZ6i7ri+pYFA1tfY9r3XamnCLykMW16EURd89qauS5cCy7rcr7HgNsERg1H6wppEPYrIE8XsShYVt/ltZ3jQ5EYN/JKiwIF2/MwrZfUJgrh5JeFuHKNce+WoJzg5Tz/kYkayFHr7hmvedKk4Wl29/MMo9EFu+CjHK4fzap5ovIVFWYMjaLLPDgnu4JZw3yRZ6BuEVpkEyjjLAiJhw8cLmteUrojpcBzC8DOD2CkMsolIhJ5gQG0SGN7xXngdbvEHvSPIkswdb2FbtEQhWiqOt+E+4QoJ3WRxFwykW61qtiCN2W7GgWcsmzlTtKV+Kgn1EG8y5sy2IDFRknIjdiIesTKdNs98ljmxlChUJHQAGB8gTbEiCEVNM+4W909pv1xji6JmbCVVBPaME0hqkDfQiPkbAN3iVINl9yOBWOwEEPA4jQNkZM7OND+TKJcYM2WSxKMdcGdg0mjS87r0O6UikoDeM9KEV4eigoF+modfIqOWAeZAzKnmQIT/bEPShdj1UR8XpDcESp0qnkY+yX1Sc4tRQEtRsoQYMeofiH5Kx2Kzyw953lY6SnDWFflxipoH9T62RDXhMfuok44hdMwBayT2Qq34UzMSp/DzoPkfFb62EWlsbNf34tcW7SkHNzq5FhIFlkdhvJRYTWLbOF/ck5ILShqHwEeyhSFVS691d2TkURK7nGoY7Ba1VT604fKe8gC2cnxGnvVvPbu3DPxPRPfM/E9E98z8T0T3zPxPRPfM/E9E98z8b9uJt5h4DEa4yu49/G/P16O5sPxzeP4dng9kkbZN+PZ3ADERyTBM/JZFNVDVomfeYJGLUQsX+RPIHLhi8WvpF9On8A2PT+8Txfvhnd3oxtlb381Ht1QBAgJ1wDUKq1ZlvG0skK4iaqmvKnI4FuY9+PL0f3jxXB6aeogmH6EjyfQ9XQ4efenm8eH6U0HW47VWz8vWJnYj9QzC2IZ35nnK+nCroDWKUzPWbsi6+zE54n7iknyrSEmtXXMKOqV6n1MtV/kz7yksxPCETAaPIvnWPFavaJ+Ugg7eklUYJfOE1VGVBMmrCfZsRyy2VDfJGzKWUJG6qqzP/LFlC+bCr1WUmsmlc6NehyCqccb961na3rot/naZ/s7Zzym1ezM14s1zJX1rI6sbd7UzYLTdCUdG7PfBP0m+HvbBM4GKEW8RpsR4DgP3gfT8cU7TPMIeR8xtcBMxygxodhFnFdWvCl8Vt56+HBHjjjENU1FDA51tcwoX2/ScTUvxbOQUUMmKRMZvqacW/BBeqIUgAV3m3muypSmwvtnXuKVSMLzap5P1BsdpKEfmTpkuQr2f68QkKIT3TWvJ2WeNI6RB2K0UMN6uljn0hPPwHScKAWW9XmPM5W8ywY6YpXDOKthksiXkZ55MrywJFB/YUuo1/52LdQLooLD5fF78JiBZXhebs3t3AFZF0MNhxsmU3dLigiupbJmSM2DRc5tiGlRQoGuc2NfrrrvLFwXbvVOTV6dY9g5A2mXqVzJrYLaF1gFs66u+FOPQUA8aFaKLx4MrSHxEZdXdYWnEUjoSiOMQ4wFoBtwR+OEDK0cD6NfYu7KxFOzVEKRCdvKKOmxvfBMbm69teSzva0Se0HSWYux3muW5qv3OrTpSi9OFSvV2Y3g5ijrVP4gHbeTjVp9dNhpb8bWqGoCRtFNoKFrlqY0uxKgWBP5aLZnYa1PdZXVk6EAapLNXdeiHiZJjNw848Tcbr2Clfp2ipuz1XdZu8nGnlr/drvnItmT35789uS3J789+f0a5NchvTzON68zDEiSOVzt6n30ixkdcyk15+b5RmTc7Hcb4pbEdTLlpPJSTa15rGI6myevRrK1lriQtprySO8qQRJ2qeIIFbgvE4j/aCNGcb5pu0cB1KUxCDHaJng0agyweW8N8DWvL2l/7ejXNd+DDXQZxDfOS77GFgrge5j5guFSDBSBpPZKy0P51IMulI7KyAGB6sC4Ozgo0jZJp8oy0f6V8PO82fLSmHwg7KpJlyJNjcLJh7qrBbE7QJYO7sZEItlRwnyGU6oDPLFokcI56jKCALUxJECBQXKTJRZA5bPwhsSePAv8o6jX1rh4U4ZFKs0AkZ0KTrBZuzq0n+kH/ZYI34/VRXnmCU3KypCxzRQd99SA+QcnrDyQNplPbi9G2zKBPitgsqAQ7eNUNf2nhll2Ti6uUkj3aL3ImyLP5rnMhCIJI0M66oLKeC2euVrgMUvjBiOQOKVID6gLOYSuBQA3R+/1Nm3TULfSwE6i49x/WeoLQ0NuEsDI5ldhMkaYAEh1SVSjTVFvrcpMJH6atau8XIgk4TruQNombAq6DRAriQttlg0rnxA+RCGrhLTrkC5WyIfYhA1s224prXjprH/tkkprpD1bpbvu2wUqa92S6rFjeJvwUtUYv/xux+OebejZhp5t6NmGnm3o2YaebejZhjDb4GoeeYJn5y8OUaUB7tnYjl1V1yxeD9N0zjcFqrWdrRtC2xuY8KiCDrwn4c4LKt6iU/ycVZQtI2id71nEVZ1cUZpCQlsdbtJEkVIBuqZyeHV23HbAqd1Fx6Q5tQJM7Xmrzdl4RQLy7HCJjqb3f9KrvmT3B6CNNK1mMMOr/mbhsAKL5VMDXjm20MFgVXccbEggJK4lsod4ElJ4iGeoM2xBIIYStdamh1YWm/D/gGLqFNpRVA2z8zFeGWSq91cFxWzeSQXm3fEGzNAhvbzJVyLbjd9dAa3HStK8HQXhfJmkLDukV5NSXYzCeKVtIBm3U48XXwzisI6zh+mNyxMZqMNu6QUGvzzjXAl1PUwepjcON/eepQIDWUhq6DccxPvG2eD9Rea9cYgq7L359sdYf4z1x1h/jPXHWH+M/XaOMdchPM1Xrzq9ztN8dcFqvsq1J3GarxxHZP3snQ9pvrIdkNN8tdf5+LJky3qSVyGrFwvXtnvpQiqw92gZgow2C55YZikgNQ1XBmY0ftc0zJVtPvE21GqDbF6M8bnpIfyybWTyqtaehthxUbsWMBS/jCZIBD2F9dcErFFsXNuIJfxOoHjLLofOhPBstnAmShrKqZSroj13sbsCtATJhqysiZN2Jbl0LKPpAOuNZpGKam2X+8kdQAUxI6ONOuRDyZ956TRVBXrcZFazjfvJexnNfpf2u7Tfpb+yXers0KYC6elrtujt1nC9EGV7UuZLgQ7ZiaiKlG2lqgeE2qqoyEQtWFp1kIm/RSecDmT8ZVDylLOKv/JOnGV5k8V8Y2UbMBDtTevDq4oHitvLHOTxDq5j6H4zPXfPBRl+YrDkPHlVt684T6Bzz6Le3uQrswoA4TisA8AoNeFJWoFaHuwAtbq+4rV6q2u8fzM9d43TMfXVK/t8OboaPtzMH6cjSizf2Tm996Q6XPfE13FKtZLR5BKhtapM7deR+rG4nudWiSZDmIZ0WOP/N/9gN3NKxtJtLeJXEIBLyPsrNhzkM+Uzequhqk7Ho6cfF3lGwa00BG6s4iMmL8bw9EPVtmGvNLemYv9Qkj0Z02cDyrf4Nk94ClvAnNWYCW94N7z583x8MXucjsBRD7LJXQ4xKZt6FfupUrrZ1fnPKhyXAzRTocDvWdpQeriy1lym/izo4yQXhkZK+C1nVVM61FNiPEmkAQO/4qaUkZWAOyErU8GrWmcQvqSMa3y5BLvpZ/7/UMRsjEnhfvPKmwgDggmW7wk5z1eQBW5L2YpbPYK16NRemdxmNYmy9JMKoIOAW5FkYrWuH+rYBKnwJror60+/dvu1+9tYu866Fdki//iLI/lD/m9LLmxDpIx4UvJnwV8sKzYdg14X9a+I4TKB+PIaW4Xs4rD9dmA5g3CvmwhVD44vku2DZKJLjRMdL94eBrSFUXWtwh9jgsmbL9gri+hn7Fc+Y+65ICgxULxmr0sMJDNmBqdvd7axXzqG4bxYFO/CKeiATPhQcyNwCpgPcsBWF1OrfyAfcIq9NtJqP/BfZ+CdQV+VeVO88v6OKZz5v+Yiu4a3Za/8I7yqxCqb5ik/yFXXrikAbwtCAwgEWT+HcUzm2HUpLKkC4jCkiiWZRCB8UqBKO76fBagkp2YTVOxUntpvz3hdy4BrCmRJZc2zivWhgIHq/SEPQymwiP5cWMp75qqbBmMf7G8OiE+pt/4FFPqwp1myL+6u/SFjHYuIRKvtoXDgxhy4Y8FSCmzZgL4iq1WUmGVGp4v6+R+qHhWBTz+ERlqxdjRK6kl+L167gyOlzVDt4cE7udPlxnyw+2Stut3MSU8AegLQE4C/HwIQCB0yiPNUOsm/NoxIUCFnY7b+s9pyKgqJgvuZgdPUXsPm2VIaGqC1nwyw8hOwaYSbs02D7dRs8h6hcMFcbAYZSscWxmJGtjBK5lHT3QklWbOQ7eAXt0zYwyOBngpW5VcLflkbaeksaZ4wran1rKqOvUGxUrRZoJX9+Va0Cmu1/OR9qRMBwtFfNl5v9yd87Zd7v9z/2y5318UYzRMPX96j9xCccDYfzh9mIxAco33jVMXP1xLWuYifuGd+W4GQtO4yB66eg+wb1e/68Xr2ryiK1lpfBFkzi8+udSvV6dtoIFQaWxjvYATWrG4qC2Cby+AAop+rDQj7LhPOcpK95jX1TwSMawKffg2L8orFXCViQAA6ATv5OBQ08DYMtPVoT5SdXkNNYYiRk59ht2jN7jh7znUMJdMaVWeFVyKA5etG5i4EturDaK56NG0oLhy1GmK9jPRDqCoKw65eSswaw5CZiZbF48YwHnf46GYJQNAoS25FmgpdRq08eqgmDIkI9xYhPt+ygmyZuFxkZe3W9eOaS2qgeqh+6gm2YHpdrbic1Uu+RJMSbFJHaVJ1uYChtv3xF4CCUyMoRYKgAWqgalGn/IKi8BLpoQY6Qhr09KanNz296enNl6E3XuYEugy/zoWM7J+Qn1O7xgMqgUubeEiXIEwV7uKv8jTNX7CCygsH0o4Ssg0hUL9G7uWEPk/zuJU/bEepdrgP+/dFnmX21UJDjdUXgSxSJz/XNjaSAgj3jmGLwSRka9prJQDzpEpa5OPz/WFZkOUwH2DiWyMrZT56QBYwXvrJjqngPeqE8EucWl0GDN3cydbBE5S5p34SFRVF5ZCEgdToIt9smoyoFEqOHEDXFLdlRk2Gn+OURrDXZzvKgHncztJm1ZmVpN9b/d7q99Zn2FvOvoox1sjr9hXFJ1FyG/g9i7WfowQUPPZyKRIioDxQchxA70CEhDttDAp22uA9igTZt9DqC/TLRRjRjNVdS+wiH1eqY0a2QiNvBCiIDZO/fpp+jdPkKix5Jl5rJDKcjoeP99Px9RhMq/FpOhrezMe3o8fhZPJ4Obp6HF8q1Gx8OXocXV2NLuaPMotPCDW7ebhW8Ie78dV4dPk4nM3Gs/nwbi6rW+QleC6IqmaZMti45hkv/fvrsBRsJhI+QtNFAKi3dP5HijkgbSclcaMVdUuZQQImYR7U2HHaUHBjkeWtHu20CyPklUj5QwH+AeYO52Osl66ajKJQk2WK/ajtXa9Hd+PR48Pk5n54+Ti7eDe6HaHZbCb4xZrp+FPXri1YwFTHK+GhZs1qhV7v5G5i3UEDSOtVNJbH/WIPvAzuRCc1PuiI29KU3gVOyhzy+JQy/dM4q2qInp0ouN2inhgTjlGBSAMon7RsgSKrez4Bf2pE/DTlRYoKiofr69FsDssVvQ1mMmvUjGeJrM2MhwW0dR7uEB2dHFmLyKIubPcGwPhrgrXXOtNrvcLLYWxN5ThpgazGLcrjGAHG3ro0mRvtXbe01iS1vPKXHgLU2l627RItKywPo4yMveWFPE1rhQuYQbIeZlVrCCVL0145GAYto91qVsyG3pLhDuUT1V6oN/HpJ714MK5ZlrQ3qcKYnlT+ZsLrfClWKwje1up4g2M3ZxDLnuQWjZk+Obl7bFb6I6A/AvojoD8C+iPg7+QIcMh/QQkjBwXEujn8BECb7i0EyKHInY7eYUhhYAHrmyuCMkG/FQxJjWnOA2jwrzA46Z7RjrUQrlti2gIt8wVhXAgM4QDiANIKKdzuqbodNhXv6COAzS9LH6UfLYWWhqlgqts45R7KyQUK0Akvnyrr0cdPeYy1xVZNVShKB6zcTdd3zGis34tKUDQiW9hlVobWLdlfG/trQPqihIZzRe2YX+qF1FubEhQE6N9mUjHHoz1NlCHH/mCKU+t+ZQd71e+vfn/1++uz7S/PFxCV2tVr0z/ouHTeEpZKci8rna05lw9SK+HEUlMoDHvopKwzYDvMv0S4Qfsl0ImdL2HzvGZeW8G1M6FoNcFvUYni8OW2PsNg3PWWJcHa3ucigGB6fGnlmPErnJ5Z2cpoEokNMthnU32nL2g//39H8+9GcGHJiv/iyLd+gFv0BjiHqt0ItTbcHgIEWT+pIE8skNJjNlltQZU3hioacFJusroNcZUYBAkc8qE4sYFYr2681rB3Z2iNEca2ebYdQUmD4jSoQI6i5etHgr3mNY6+0qP7Dtwe0iMPfmmPTnxiSFmd46HC1sdJyHnWw4ez33S+GMiGYy8QsknzXg2p61UHdoS/bam/nJbaCrqAJUM7KKodFkNtnPYm9TBtdRsiyCDL6VULG9DIOdh21YH6ApXYVNJ0FWUvjWUuR3ST/jor0kkJ4j1Zc/OT3JdN5rZCukD9w/qk13qX98S3J7498e2Jb098vzzxdQjvMi831S+LfgP5p82vgM3MHnsWfCtwrZg1i43AiN/+/UEj/Gf8VWsrR6sGr1do0obdRnm/Vd9Pukva18vUslf32Q/nLxlOfyibV+ThvILi58ulGyU6kKbDRdNTt53Xpn2vx5bsYbcA7twgouWBglATg9qNutzuSTuE8/5gy35wZKlbg4blJ5n89TKQsajAGQCeZAn6PJ4FwTg5BFVftjLus17c46r2Joc8JsF9HspA7lT9XiGy3RGRTfxjDIgpC5MzPg0VUxrPJjO17d22/Vrr19qXWGvuOmM/fbXUSuTU5LrEDbN4DdES9VuZ2NjoosA49FYBCzIsCvhncbvDokglJ2xFgLRjQTeJyE1t5yx+Ssq8ME8Q3yZL/OfrkiWCmxuWgluG+ucsy9S51JW/CQzFf2ryml/6OZ1sgFHb0O+LPNV3H4L8KBKdbei8SZ+G0vffaaxJn+jm8ifYTjAiWU07xs401V3KuYc26RPxmHYxl/nuKNNqLljmgMa0wQ8VwTsZ3CSsoWvq2r4a0fOs3qa8O0lW4V6nIEVt+8lfGQB361U7FSnQeSNSPYkezv6MMD0O5ilSSHUZDSKJrSp47ILVRdV9h6cpfoKVonuRf3RH9CLNMy6Tldo01z4rOoq48SoSjov/0ok3wYpKLFLuNQmrPfDYmgJrV8jzSsfKaB9l4TAaiOterUH8Z5ZpyKuQLL/O7bu7J/WI89IijebZo4HSuj80GD4q5BSQ1TrJdZswhKrbMT6XHO6H8rfY8KwyO+9SoBGRmWkLYG+tyzxuNuinqtfqayQ7iajzMuVV5YrODNyXlHnnDWY0/szJ2rK6BLW1d9YpsLYsU47bVmfaZ8roY82zhCfkjC55LJFaJww8zawMWebZWzhXeVZfsY1IrZQVAJuJn63qrsdX+ocFBZuyctsCuO7hDuyGbfPGSLuCC7YzAs41eHB3rcs20g3RZp/l7+a3N6bX6skbmXecJc4h/Y5DJOZfJJizWAf8ab2oHi80Z6JB9s5AoAMwSlZId+9+A4C8DIE131i76oYteKp+brmOeYrTBKeF6SHBQs8+lQ5hrC+/EdmT+WVVKJ8cQWb2JC033HIW0B4M9NLU51FLINlxmvkoX7AJY3aXJ9zuQlV7vFOrsV0cWBDvN6vCp2OCxrzwKAeAbKpxywrTv1vmRRSEJOc8cTZIIBFT5i7moDAWlhOEQEd3NZZaJC6EkalBrCl1lyMkwqkKFoNNa7ZS5PiO7KXlL29NAMhawfcJR7LuknoF9Qn9PQg21e/CjCb9to8ugtj0CqWaPvs5ubxyRzoc7heyI65KVqytN3lpSaAAIGJWVbn7IRLof8ckZVvIXOisuknarMDHNauZyOxTNoDA28RurDfuGKufl/aam+Rpan5Z7ckne/QQZo2vefbJRwhjfjk9SlOnCTJMM/1oiQ1a0cN2iRSIE7NZdwTv2vehAu1Wd+58D9m+WoQKeJ30N7kDGmbVCy+tYXSwwXuIUyJ4GXFKeDcSBxe8lkx52qGmmYrFwr3NtYRL0yaT9u1IHSXOGfWuIq45EN6nJUOqYOUzmC2B7TtsVLX7JJxCk2qYy3/gyequjnARNyVqRxHPUNKiN7M1K6yTST/aYwZUWU6sAch5NIB3cO/1gbesfOLJsFK5r9sY+WgQ0lLLrmXSlCueANtaZixNtwYz5Rnb2EXnJcuqJS9LG/iQJX7HHrKi3c5DmToHyeyJ17FFcyF1rPdkkaTZhpU1XlldzsfALZitP5wVuUj1oqEHO2y74uhmNUiiXAJPsPlLF9in/IRoQ63Zxt+2SGkOEk33m+YyFYp65B9r98k7ZgFkP66bzSIzVoLzPLZS3pFztiPncGEh3/Agy084974T0Iu6BQK1+wXabQTI5j7B1l6hFvgb0TUV2axLkjgnQeQos3DvRcJz66cZW56664SnzlJYdIn2JC78rbEjL9EAv1jiSBI0wC/WEov7BVKH35aAdn87xOHtglWQaJooAaYzTWAxaLDfzVeZDvUy9V6m3svUe5l6L1PvZeq9TL2Xqfcy9V6m3svUe5l6L1PvZeq9TL2Xqfcy9V6m3svUe5l6L1PvZeq9TH2/R1jCqvUiZ2UyqHjdFK/xioibSs4t/p7VvLB/X7goHRAPvYfUu2Eh/6+hU24o6jWrBy98cXhPIHYcMWEQhHHNrIBr1pOJlmMBISyHKmcFclyzWoYYhJ8/8oVSGNiPFzL05JrVZZ5vrJ+q1mvutAPMPXpr4UXSLqsxVu73+RbZHgjpYXXYik6Yw+3Jal0GFLIgsdt5uS8NHnbgmtXz/Im7aeUr92nSyjR/KUoe11ZVovJGKrW/0X+WFW5Y+aRgU46BCW3QQ1YSsHLHoCuGeb9w+oVzwMIJ5f0YLDlPBjDNvDx8/dwun8cxigZul89SXHW7fL7Lazvo/eNjySte3y6fp3mD/ltzmegW+jyE4JL6C+RPPMDsaqrdaUt+I913up5Z+EFRqpCd1au2b5bhlRATodgNTkx9bvRbu9A8L0TsBJxtahNM9u5+Pr4aXwwhTOzjZDq6Gk1Hdxej2eP5cAaBeTua8zDYhpNHypSV11cDgLahH1MeiwLE0GorA1wetQ9FxcuDvjbhqXgGSdT5FnuhMop0d3wVGh/pBmgKXoGwQ3YQN/ClaugO09gJUOM/IZu50QN6hXvbTDM9wzZ1uwAQ3W6z+1s79kS/sPqF9TkWlrOoSl7VrCnZq5I9howKXD0MpvOzAs3VfBMKS5A15te+sAVWtEz8GfBF9gMb+CGzTdKkrAnBQ1FCSZgXTlts54qSD+0wB3JgkHvA70Wugb7Fic38k+6aetChLH+yO7HXN72f09/8nLoXgHIzqFn19MrZbNlp4HfMoSLvm7W3PyDNL2W3QWyyxEESSfr1k65OixAQ03GL+Q1+hLergA99Rfen+ALkEyCTFTtbrFxSWKMf/ciEEqbflupYVml0lgRQ3xhTPDDqp/rkqRVMV//+yWpfByhQyQQqKEg/ZRY0/xu66E4/Qs4IuVG487Je5qnIX7UB8GZssskHQlWX+X/wuA6QRQvrR7GG4bEGbaK65iSjtxGynjBUUsPU7aqKumz1zwVhFGbT8jNE1lp2hTDvB+/gwXMGLsew2oOizFcoUXnN8EFEdXrPHYF/zUXWieCJJbLRyv9OgIzTO+FZYuKUG7Ri8FG7jS06D27iZQO/arRingCWCaKUZOsmghFq5HBZqJUeDJmf0jwVbAu6C5nn4ie/fg1TcxBe4v1M/UpnypmlNN+ytN6+IosCvQDhhWT8bZB3EvBS6SgCIOuDJOr+GdTu6uSTQGesJWzKX6hOA5oLFWff9Mdu3SBMhUBtnBorFwh17r+M9AO2e8CcwaphdcL9TSWmfzUZsJLau7vlHU8TC+nEjZfxPhVOeauE9ptVrMWWaUwL4Pq/WAjNl2GaCLcKUsJ6/VZcmg1IO7pvuDhrPDHRAy+Bl7PraFSATgXbyen28/SrnCdXAZxnnzA1v8TXK+iH1eUWtcODSWqUZP8v2KZgYpVVLcejjnIt56POcr4Dkl/E8z6S1hN+qTlbVefbK5HWXlzdw17p8JXa/UrYdSr0zit69IqevKYHh43ioR09tJcHd1EX3LcCAn5kVOg6Z6ntPNSupOVfFGjHdTECgfX2ltclCba/st8RcR7DTSsG+yu8cPxPDEOD9qZ+oaDJqV/Iszr10UQnpXXg7ppg0d7miViKfSWD1qytBda24Q0XsRfbl3BBOtCRKI9Zisbe2rHG765cl77/TWcxz4ln5/4I4j9DnPm2Kwz5RISXadj1oUlrofYmagPUzY0noLDjCe2Y/Tbku4laV5HDg8Q7i13JglfAPumHyvxSa922agwPSxgXMIrcMYWL7hPZMVIM7cq9BdQJubNgpZm2wFeu2usvDDXE+afgfGlmLVDd7itjz7n1nFvPufWcW8+59Zxbz7n1nFvPuf1KOTeHa1uJZT2IUer9dYMrOQ/v9O4frlYlX9lxlQzACq1kgP8mHO9aC0O7oOqC07+dr85iljJnN9kbzorV1Ml0ViLjVTWL1zxpdPyajvwhQofowX3kxDdxQG339AtY61k9yVMRb60sc9diWUMAoKqdkk6j2rnpLFQ7Bo1CBpLVKVSA/zCorx6UZsbBo6ANOSiSDYjIRVWjrqi1NB2svUoCCBMap+Ss0uNxzlKQzbs8T7iMF8+mo8y+ODnkzBecqRbuU9P+fUIgm6/BfFw16VKkqV7ArZxx4QIuM5Ff5HmZiIzVarde8zo4nA7cqURC3acgY6qQHq+pwLSQA3CMmQO02JoWhQzykHrLD4vCdTrfFJYLsy7WZjFdlL0brsu8Kc63GBjE2Qyfylllcdok/BbCUGQrrNalb+Ns/ybrKOPMYGcZ3+RIf/v51k3w3QqfsqPkjkpHGybSXXXJAk4VwFbzLxkSBbjTVGSrRt1GO8Ki8KrmSYt4tsDGbDmI8s75VhlnZXVhW2c+FSSwFbmmBd75otMoFm+1rILAmGVtWKdXxoIBqmReflX4lTIveFlrPsM804Ttv0eEmQYf5dwboOLW5PtQuyHEnTfxE7cBrRLO0NuOGsGAHHZh4upafWoze0ReHV0+gcLD0MK5FupZolC4W70YGx7Wq7iF9av+pNgfEF8jtcp83XgbevFZlMdFeK5/v8JAHW44DaSW7/KmnPBS5DrGRV7CsCai3n22fsEwG00Bdzee3DCg1mqjz8WG2z3FoUmt0Z6XYrXiZRdvcJXmL9bcfXrYiN+3Vp5PRMNQuYUsqryL+Fp0vAWoDgpTETuXI32pt/i5xGWh6SJvPaW7WIA2Hje7uvDbDVcuqZG+xQ6NeG145V4Q0AsCekFALwjoBQG9IKAXBPSCgF4Q0AsCekFALwjoBQG9IKAXBPz3FQQ4QoBK1HywQTf8g4UA1zwDJ3r+UABf8FBaJCuAsvw9CXeLMcMm67zOdTELbcN225/+hvruxl8Q8XoQU3DnAR31h3/A5ehq+HAzf7wd/vvjw+Tmfnj5eP7n+WgG0ZVEnFfUBRUb1AZJi1kLpHyBSwtEp0VX5IjfSs+9EKM1e5WIC+8dmieFJ1tQgVGrdRSTcQahnNQbASsrial2otpxfts1goWQ6Zhw2tU2QqpKHQrDKtE4Fe837+6H7YBhc4ZsIaV+gzrP068pVlU+mhBXzRmxFs4esmGSAHCeqyL+qz7We3mXMDeYUI8Cfe4Eul3wcY7BdbfdP3EUwSpDaN+M2/ChEFCy9bqPDluBd7buo93XaQEp9qAlT56U+dLJoKQQU74Sbn65ryaA3mzyLDjfIdl098zsmpXXyCC/sjEzEylP3L7bGHe2d8oSg6PiwD0zZx3UljLcdb3fWcyrzr2CuTKzT5PX3WBQBek+3so8ZPnFe/KtDo95W7Dljqh6kgSDrJNdoZcqEpS2KqQnbVXgGa+9wQu/HhSw6o9pS05dlH1D6ZTbAdMbHrgA1omH1BLa2adzSO9ymNBoB7HcRSgNzl12wSH00R2tKGQryoL1M7wcXVSb59gVwuF+ucQ4Y5aUqvW1JH3pPKVD6PbrAL8q801wn3cV2W3S31rXXXA/+8tOWnKQeOkAKRAEHeqQBO2TFPnr6TVSm5Lz2uFuPlWK8pCxHcxNANvmZz2GIJBTxCsRcJVolehuRrIXO5qRJXY0o0t0N0PMyo5WqMCORlSB7jYU47OjElOkXY3Du4TywLj4dgXujtrBE3byg8zl3QnisuQmer4FWbRYXC2wsgArbm/61D511bXIBsiI9mWLUmmgT3so/mKbvjShRdmCy1XUgtPEt8AWm9u050dDrW68ylamv9j1F7v+Ytdf7PqLXX+x6y92/cWuv9j1F7v+Ytdf7PqL3W/rYtdScA5iK5j717vWXbCapfmKUpo728VH+jc3D+ld3C42VUedCtGqzyC8uoDpM6Huw9WGyvgthMv4jZVsSfHzOxry8K1GWnivAZtLCjfRLuE3EirhNSNN1MItOEi/cg/p1SvPtAkvN2D87PMyHSW8Sh7KVPzMk3DnHKRfuYfsFhekaf7Cccqtjrg4mKk2sijcDgVDvQ3Lkm0v87jZmM0EoJn4mU8N50qwutQcwRBs4/YKF67JUsBK7wDpHs+3s4wV1Tqv24HBDn1jzjOW1ZB8pG24dmA9viyi/coBvfN8cFgaNymr1eia5wmrwaDSFgYE5AtAh0Iyhy1eo13MxvdDUn26sAmuh3PSy5HYIQk93hdgfaU/wwer/5XrNkWF5Enng+6XocKWnbgLwz/2G3goD4vCGnw1mQHZSFfBtg+WO6GBge4qFQoRFyq1r8m99eyvYtdIdJZsVzrOEv4xUIWEt1+4FSsw0ksO68nO0o4Iy+lyCKZiwllSLhePV6pO9OhZxHUL3yKh4HpWiw13nySb5i9Qhb5l+DOEEZmPUXnVO7iTID7glRY8w1u49ov71n5nqUBDe9d+qFjg4OwutrfRQz90b0X7qwiv8z0lA5XuYtLCRUIN7mTVqMweXqy7ULuqbqYriG9X0M0YBfFuBQUH3yX3gLrkRcntO+Qlr2qR2QCHxXlNSMydMxRGTpgobTK3o7o2zQkyc5dlXrSpswW1x0iZrH8hZ9Cs2ZCfoHp+FmWeweB63EQIY1gJSw3xU8NSd0KDGoWClyLUjEa4dUh1g3eOALQp5UghlbJ+tlknArsNIoymrwVoc6NECeG4es9SkbAgnobZAlSSYTQBNh2i4qzCFrYVnHMHccN8yF2XoDZy96uE3bvGIWlXd4ud7X2qi6vJWIebxfoZVHAgJhi+FjHWmsHnG7ER2gkXAH9q8pq1oEFhPSUj85bXDV+xeHuRp2oh34gn7i5tUPwMn5lIMacXVM/bmqF2Ad8r1juoWlqnXdehIN5vQLbcqriry8GeopPTNUtTrZ0Ia3yIu6QwyNM89aoPoVs6n6lKGN3WAznfcNeA04p1P75fQGpCa2nAbfNGZE/uU+AI2atZcmDvv1fQOl6H2OQAos2wdRdy1E7tUvtq8Srw970FsAmeTUrpt3+57aKtBHfqQiGm58FrwQwP4EMd7YePrA7C4qlld4/KNfU6L8XPmjoF6vJIAAHvXzKl/SQA+uj4X9ByTO6Ul3mrm9Rge8Rg3YU8bRlGSXCfUEhsadOko6a7YKWibcc66ygR0NZ59Agk7EE2/ZDiO5WBUxGvL8hpywDm2gxkJsAZ1ZtTD2gJPkIY/3Y5E9kq5ZiMvD2xGF9AOwLN0kap7eTX+GNulQ1o+Vrbtg3fe8K3X5k1SCLtT4JYzCjCszcwCRlveLaq1xaBla87D47pzdz5ZVitEMzqxFxf70FG5ZJeG6L+W68a96hdV+jOUqEI3PtIcqjY3nq6quja8h0l2pXsrmDPy12LrQsbaGEfVSKvUfoB98n7LN06bHW39P69SLjc648o+5a/z/M85Uy+/nipVy3+7BAMIa4tFSJwSyT0SLyFfLhXq56FtT6ECY5lHJD+dYAV3xIbaZ9OEd6qIOmS9nTgdEcTdVs1LoROxSvvOiET2jqANMDXSrBHzSXUlCmCLFPRwQppVW1wbMvQAeI4Nu4Fq1Yaf7NoWLDlV9nY9urYXh3bq2N7dWyvju3Vsb06tlfH9urYXh3bq2N7dWyvju3Vsb06tlfH9urYXh3bq2N7dWyvju3Vsb06tlfH9urYXh3bq2N7dWyvjv0c6lhHFctBCDDYQAB/pPBfSxNLHs/BrO8tnKP0IqRkYoZ1zeK1pZNq6nxDbs3SkT8vnQO4QwkVULLYqerVE2izDGOkoMHboUIGL4gaKaq6FIumswBlU7I0JQoOswaD+mzJXoI13JdCM80KNmFN1VVeJ14Io3UODidhhsECGep6V/l3d6FrVouqFnHVBUc/c6GZXVVgDis/CwxBKuInHeCoyCtu9FTSX50ennlZWysnv/2PTeolTOso46g68mILGRBUeox5TrkpnHrCRdxqmqxWnxbI22ah2ooW00PgUoO7a3fBdpU7Ktn1GlSrPjPwqosOv26PVEcVbpF2NQEN3Z5ad9TYkcfOUgIZLvGSx0Bl1YM58CtXYxMYWx/liLUNwfAAEOHI20CvCbgVoCfdGKwBdbVeDXZvnKH/bELlqhYbXL5EiNH8wB68cAFH6i1LXIm05mVnBTbaeb19eFzzWjXnyygN3BOI7jio2nXsKOpVq1bNLSsKka38qlrojtd9sXFwnTpwvyJJb1svaLj3gtwiiM9AVNKSTbcLeFXcsAVPW+8pqFd4krKYr3MI4/VvfNuWLfto7/V23DVMzxRKCNdGeq8+VHC12NmdYBG7GsjXdJ43mjV5V2/SXyYMJ/SWui4tjdy8eeESjiA+q/lKx0mDiVA/s0RkK5B2+jQLpLv6hGvJg8PHoofxhcuaZWnXZ1CtCm2UX6PpdOs1G9UKe2fugTd5/tQUu3ZrRwlHFM2KXXLuPOPyOnpf8GyfFNlIjJuKS07N71ML54qBgalU8la9Vh3uuw0HLWEXzr8gT1ImMiO/mZT8WfCXIG1q4dywdYh0JcfE9gYJoIdzG/JxTkNucjH5KLKV2YZTHudZLFCs1wr91Ua60kZitu0nZ4tPeRWKn2WDPeklz5J5fof2WxkvK08q7KP9WltoX/SbPvNhXDcsBdYtRFO6C+0Ws/KmCvNSHsYJcKduI3ZePznQoZR/BuWn5Zvzqgarv1Y6P4MIvdLKDQjAYB2hTIBewkILFLwOzvJlbR8Qs2ZRxaVYULQvQ4/d9jsL2f0x1y/5nNcs9em6DpQXnKYA1hHQKXTiRm8jXiIgRg2yHz6qLWsMyh87D/Ygvl3BXNTBAHYS7r5QubfMnazhAaXblVvxDQOVOdjul3UL42RHJU4puzIpYOfApIC20x3WADb0MqCC7xHCeYWXYhnKnksImsF2Qs4A1n5Zy3tJGqqlmpbkaMVlVipLbrQyXLN8MqKJlccqQhKrEJclZZbyn+FUJMDZe4V7ZgOEjj/4RQeS+WX1rNSnBD14xJ2AQWKNqKbi6r9VaSUJmhXhT398095ORydHz/5qsGBSb/5spve1fii98LMXfvbCz1742Qs/e+FnL/zshZ+98LMXfvbCz1742Qs/e+FnL/zshZ+98LMXfvbCz174+d9B+OkIPpm80w5QZAmf9LVEn7LhC2o3CPQSuHnYIIX3ygTStAVL2Am/DhaO2j1/lZTh87vYhq/j3pe2rtQt/OdwnsziEl2Odra+o5TryRdg6fc5wPlJ4nZ2pKPEQXnh2vnXdjY12zniqzYWCF/XOKmsTgF4FaxJUYSw/qMnAz0Z6MnA3xsZcEjAV1d+HrrBZKQR1b05W+1Bh+KUOOhAsBML//77PfW//35PC1Dg15fw+IrFfJHnTxPxUYkgSbwvKUGer1I+VKmQ5WPG0q25v3pAmZYPPDJt/JytblnGVm7NBtp6Ddja0Wah8ivL7f6LkxXbU9KWejrYlgTTw7oCR4NqQyasZBvb5TxIvFpUY85WQQX6nK2CuvM5WwUPvrl4mjtTTLfRzu0RQtsf+2cG/nC3HFxvmb7deUOQBHaAvIU544j3G7+915pq9HSqp1M9nerp1K+MTrnXKS2OfOVFauzTotdRLfv3RZ4txaopWwFcQ1ewPIMqrdVAwEmZP4sEbmB5zexeADIInPEaxquyYQ+wrmbNZsMUQ05wE1+h1T0PhX9avTOFrF4kFBODpRasKDCMKU+cUQqHtzVQ22ZsWFW8NoFs7RlRj862Bnm0tNHTSYsdwzz/2ZmtnUi7s6ZEaE8adHBrGjR9qb8CNNq/f2uEN9kaHr6Sa3R43rvQrbk3eytwq/eQB1zoQTVF66INx4uTVeePol5jKBOXTO8u2goKvKuoH2OYZs4q3KotUCJciT0WF/NhpzgjMZFl7P0CiFkmioLXXvhdt5QEjj4WIAYXeXZd5k1hLP+sZee2a6Na9oI2ap/BnzJcGyd7Tf7soruq3VlRMNwuzOcrurWn/N4GQhGI3RL7Gw01Mym5yKoagqklO1sLFww02lWw3XZyvh0WxThpnx9dRoghORBhLGmQBdDl17lNvV2LRp6yrb3E/Q0XYLK7vksaNdphiKyArDur3DlXMozq/rnaVTAUmPWAuaKSs5qlh9e7s7Rr6bnhmR3W9LVxWPU5TWFSXVMUIrpWmYYOf5tI5CUFAmx9yL6yjrkkGrCnvKrcQHMG7gdlc6TDpbCt+81z9cXvYqOPNagiEwox2r6M0W80UZpxN2wqYiDqjs9+qWqausGIOBzFlLRWUbyqJNMZRLDkij0tmlraf9nE0bPRPOQVT/592CuutSK9c8B+21002JNDtoWU2iOXI5nwkFTfxfsVrFYlX8ESQPqK3J9n8Boo0momVKTTylfeEeI137BuA1+3VGdl3RXsfOlZVIF4uO0Su6pXJbxm7sv9J++uYp9D71LzjbuFb3m54vb5hYD7Z16WInFWG/Ch0yaDyPPvedkag1e9t1d9A53EMIQUtMoiQyHMhG3TnNkfKsOzvudpTh/XxSPvLmj3845teFWwmMtkARKaK3NV+CVXzH3CkXS75FxBfWJukzW6a5k+mNPnvqmLph66sVllPMyJiFlV5V6YUgK24nmmTEcFrewYoUHCAqNs+mCXse+/ShDQdROVB+uuhd9VpKVjs+bH2aU+MqDA65pZH9txj+sutrOtrvsbliNe0r57IdgbhkAD7RKtusMzWl3lpZ/LZ3/xdgf2FD+0NwdX7FeZG02uI2iaotHTRtTe47AdJNbWypbPIua4joFCGYNXhFPUWg2r37NSAO9S2ZUCUZJclgFI9soAwAmhBURBYjKsFEPRxshHg/B4VQKVkMPkIwSkZGm6NZgpz9jGLormh0teljbwIUv8jj1kRbudhzJ1SKAX9DV1x3pWQ2onlzQRbP7SBfZpFiF8qGbyLEo0L8VKS+zlQxdVkmhXTCWB7UulRASlU2GcL5oiltoX8vnQgBVsFz2UkVVdSrADFQrLuoveysCr+/nYXQVDoVwP4GEfilXJEq4lUeBySLc5jN9+KSrYgEkQOcosnDJ5NQ2db8duTN1wkaDhrF8kZHXbMUht9J4WgrW35Ko8dTcRT519stgpUZQFWkJCsNh1xGrahHcnyJVLmeiwrRUa75dq6VLh1aL1NQFQu71kh7wCzWoOueZZBXfU1LpaSWj7JqTMnr3XWxcJgndcC4xdchvxk8eJBEDOUvhpx/G7B03HvrZQdrrRdJCpZgcxsCyY9wBhH77WSKBXwPUKuF4B1yvgegVcr4DrFXC9Aq5XwPUKuF4B1yvgegVcr4DrFXC9Aq5XwPUKuF4B1yvgegVcr4DrFXC9Aq5XwPUKuF4B9+kKOEf59pKXT8s0f3ml6o3iJkGISEsF40U2D0QoLxPzy7Ab8FTdCFfy+aPsWEAoalBt0VrwNR/l3USD7zhwP5ymwrQ9QDWm5f1pYdwglCsIRdfOr26HzFgzDYaf1hUEHq2x8wNphLvjo9xYfXVTBEfEwzgv2TwPnWrBKnyUXYeCuk/yU2Nn4jUJswArM1/STVR/oN5cVoFXaaj7TdJvkn6T7DhFFiKFUH2Dmn38asGowhYJyOopudsnq7KpmtFHvilqVVlbix0s1VI5d5Ty1c60a29Z1rB0zj5KhiugOg+Xa+vNu8r5Dbs9c2wAmvTJr8DHS9nB/v50F/Q7tKOk07Ri7PdNU0e5Vg87yznK1ha9Do5zgCAHRvKAVA1fSEnL93S5q8inRiD5KvHTaOKcMMMEQqOKceKShZC27prXO4cliP8iigiKF7JrU3WUcKOKuOgwNGgO5RcKGkX5hTzbJx8dtHRqfULbTilcxCYHQaXJLony7qHtKrIzpLd7vEta4i45GgB34QUkR26BAG/gF2hLqcIzH8YFGtixyBddR5qSroTPHYntoLGaeQn0OwmSImJmAtA0tC3UdT2EaAJDqsGBBl51c+gZo54x6hmjnjHqGaOeMeoZo54x+ntljBymKMvNjn+lSBUSWFxuM7YRMdpR+kLVNq59Lq1ZlvG0ctI8KaAhTO2abMj9MphM0KK4cdokoMKhNBqVzn/Vrvc2X8iEScaqy2TCurMGy4Js0dzbWaEO3DHVQoQzCAQKvO6+aa9Dk+wolADJeg+nd7s3jH2/Cv4OV4GzAiqev2reW5P4b3z7kit1CaR5AqNEM/xGa+B0EniKGc9bAVzb6NAnOuhAurAdNbsoqAj6ai0ft1yodRd1QBWhHkKynRhTGe7oq18o2Jt2IVdLkpNdsn6UAVtJT2JZbczSxsowRwFcy9Z4G2Ab4PfktRf1fi32a/FvtBaddRjnG3JWOXgxnt/cXz9e3N/eju7ms8fhZPI4vjw6Obqe3j9MZgHEL5QuJckFdXHKWdwy2wqh7WkI68SzeJ2XZsyHmXD8fotC/8CI3lZJCwKeM+7683Xt5hnt4hw32UTkVrVNvc7Lc5aseNWGmGE7Z/FTUuaFeVqVeZMl/vN1yYABqH34eKNDkp8D51Hulsulefz0U5PXFlk5T/OVGnClFT7P8ycnY+d5XuorI/2+yFMt9CDIjyKp15XvBSurbkmOHGyHk63G+mIsSqpsr5G2aCpQptVMsIzf2DuRdH6FhWtV7uD8SiHKfKmMuCTL1qo9VKjVTLhQu71n1ZnzLfmKBZprlQm0FijjN6byw3YMmotuNeGjvdpRVgICGmt1NnVtS4ToeVZvU1512sgUrhQJjGPaT/6GBLhTL09TfFbcP4+fFvlHt3vgyY07zwalKSsqsUi5Xza16Zh+bHXE2n5ypJwHojYBEEnLaluCKPHQTb0NPIx9w3Fgjt16EOUKjlSRkFxM4hxjfhcWLP9OJAnPAqBgabL/D4DCpeXm8l4wvgs2JFiD51bgQ4PveLI+j0S5ntke+bKsvfT+yZsy5npumt0zA6I2B/CQbdpDpoDBKoKySIkLiCAdjBM0gZIPO0Jnubbc5W2B6K+zuOGDZRPtTG4K4wVAcDBtT/kQZXMwAR1FkJ59TdXERVPV+UZnB7nkcW6HPzHPHg9Ee8+cGtx9i5BjkLYGMKHx2HG4X/KKkqbS79q58LSc0wX6yFmiFgOwifRlHje4tA2hfpV+xeEXv4S6JatLlsXcY1oVeLRc8tjWzFidCaTTEeob4delA58hJfCfvem+yrP6im1EurVezrN6Jn62qrseX+kfFhSMzsttC+B6/zqwG7bNG6MCCq0XG+yZlEr4fF1ylvg+xg6yo0aFdOp1eO1389sb80HqyRu0d5wlDsP8jovVWtXQwSR2MoifqukydwH8ab2oHi/0VUOD7J2CQAeQke+b2kJhKC3pDgoRLtxRSOlgIJNztmoVUs4KFyxe8yDwmtfnW0/7Z355s4aXcUMUbtiWK2JJyxLYOzOKBAs9+9xZCGPNjszhLH9ZFconJ2FU9jSh3NVuOQtoTxhwk+rkOt/qw791zITLtcys20VaetJQEd+OG5XEk7wKH8TBEjYjAAVgru7yhF86alxL+n2T54VHQQFkU0+Qmhs/fVa4UhtgA0Pb1IG7fvaJ0E7/me3wn7n7VgICrHenq74VT2DfTXHvLXH/DfFO5zxTQ2z1EUDWLrnncCDK34X5avptH+AEsQn8PcgJ/Nvb5PLKnYiJ3ijwSwNLtipZsbYFoiXXfJoE8XIjKotHmKRsu2DxkzNik7RZiQzZS5HZDEQAgVKN3VhvvCa5AGpmL7xJnqbml9WefLLHCGHWKJpnn8qEMOaX06M0dZooReycVjtu5Ltu42QFENrSDqat/w/z1h1GBVOVM46cxnfJDjtKuFLjIhXkytFGbM3tZ8e9qcNIYSoWC1fqMBXx2rk7zyhij+RTg6LjNSssGqcf7WpnT7yOrX0wS/Pae7LWz2zDyhrFD+5pZuAWzHU8z0Wqe0kPVtFacRJO1/C3LS2cg+ew2zKCrEf+sXafPIoDIPtx3WwWmbkSzvPYvP4wHesfyvAD76qhte1h2qYeDm1xQAHDjh31+DxQZXH/u0poBsjazDLkC0+6r16miKxtnHQggszYe5Hw3PppRhcfUVvSWMXz2nLsZy3xPZin+DLmhS/jlbCAQFZiLGZZQkLHmka1pJQS45IzsI1hNV/lpSBDGUuA9bG2IPRTnpzkREwgS1CgDW0sibqG+c8+v6ONcczzitehB7qxHJ0crZ0RAdscq+FKgtrcmUS0GK6jkyNrN8BTeHwLfwR/sik66LCYomdliByD/U/mttR4m+1FJCtev1oB2yu+esVXr/jqFV+94qtXfPWKr17x1Su+esVXr/jqFV+94qtXfPWKr17x1Su+esVXr/jqFV+94qtXfPWKr17x1Su+esXXb07x9dcTT7f1n0dMM39n/3m0QVEIaLf+Av1YiaoGzmPWlEsWcwkH4QK534qSa52ZyPFfVWwmZZ40MenI3kkV20VeWhd10MCxLClzkcA7EFo85Ze8wFfO4rzkg5JSlAyY81JRimcWb+ElYuQpy8fZ/2s+4yy6yeta8IhlSTQVzzwqIX5AGeVZlHBIH4CYOE8hA1KU5fVaZKsfIhZ9oJn+ED1MbyJRRUs4L3gSpeIJ3tlGeb3mZXQ/H0YMMkye0oBmnCfVHY4JCuiOzuqy4fCFRfEo4JxzBhbW5FHX6OIomrE5OXrhi6POId8xGkUxgKbPIlj1VZRn6Taq16KKWFF8U0X5SxYtoLPRt/g9G8k7R8fPROtOJDprNgtewlOWpDwSyUlU8pRDeNPkJKp4+cyjHAP+v4mWZb6JRDYoyjzmVRXRcFbR//lf/zvKcjX4Qt7GeVmdALipeBlB2ydqLtTc8CTKywikOdVG1DVPTqM7KM9WPKrqEkq+jUoak2RQclblWTScjKFYzSNRRwlPxQJ3Y7qNkpxX0d39PAIVbsWj8eXV8O3w7nJ6P758HF++hY2bvr2fDeQQnEUsAekETn2r89Galzx6yZs0iYg2RSxaimzFy6IUGezlAcuSQV2yGJSCkZysaJnnNZag+SjzF+pZltdRnD/DYFd5VK9ZHS14mmerKhJZxKKKFwy+JNIbeBu9iHodiZrmM+FxyuhA6lyZS5ZWuDRB7fpYguwy8ZZnDMKzFEk8/JhRWkiipeaeAD6mTUVQUwQo5IyvbEoqkfBYsAbP95KYAFMZua42G0BWNUNeEv+bmivim+CfBWwWVVyKBb/hz9jlF1bH6zvK1oe/Z7I2+ZAXn2nnSWKHa3GGSxHq+M+jJ749Oju6m92KuMyLdZ5xDC9/yaGf6tZXNasVr0A7cnY0xSmIcD5oOrd5U0Yb/f7p0V//crKTqsKrSBw3LP7K3cKLeWqGJc43p6woUn5a8bgpRb09pY1zijUNBITyl/TRPQIK6waK1BwxpwZ8Oh1d3E8vH4cPl+P7fWeBtbrPouF7HCL6JF5GbyOUQKjn02hIjUW4XSK7neg4gatLmTfVSSRPpDenEb0KoxsxIAIlUKcsElkNG5cDjY0qliWL/GN0vBQpj2Cl1rB73/ygqVzK2TOv8AVJXZoMkguaKniWVJHYf85Yn/u4MLfdz3Kef4W1FL2sYYwYHgUD3Pg8iSra5nAQAwf0LJccnGoTICzQuYexubgDX2tmH1dIv2vcXXMSKnF1Px2BydLd5eNsNH0/vhgdWu7xdnwxvZ+8u7/reGVyP5s/3t3Px1fji+F8fH83A4q6zEtOUybTOUEMG+y/GSgoVxGW5gISJh2dHYn8VBltnQKbeGpt7Su/3qOOto7O7Jb+ejgtsTbXGbFUoRVbRRu2jeDaI7JGLW7zJk9+iMT9DF6VWx2XiykQASOCPKoiTFiU2TvGfFckh4nWG4sKYF4quHREdoCjfTRkwco4T/hjFZM51JelHRdsw0u2Zzc9VDyJ6jyCLkV/mkbQvwrHRXa2OqXJe9WGuBjejqZDXIecQU5TZ32pF9asTF5YyU9j7KlkWoDPVDzUvuGs+O9/73FWrKnXN/lKZO8Fw0BNE1ZVMmaLjbuvCxsCOWFURj8DJ6kkPNxy+WMq50g/Vrz2mtBsGzzIiHLq9fe8hPhM2DiSKMErE6/UArYAJJKwAFp2oADXmFBRPclMCOqR+gG7tcmUOcZz/sQ/L6+24zA4p9l6xa10Yd6wSIe+t4DoR1G1/zyqiebczSZU9MIvBvmy0EI0FRmYjOAqOjlSVwe55ECGUMLNBfvTXduESg2L4kqOJ4PLAnT2gL7gwpTGol++R385OYKr34wteb3FwZKCJaATE15WUDQSJCxOZHVEG8pofIm3Cqr86OxI2tJGG5axFc7/EXzyYTXid8ONT3747mpxZTrnBK2IswgkyMDdiUzyb0Di4Zj4poo4tnEMJKyQ+xJuuHnGB7CqkMK9iQwT+U0V0dLE04FnyQmcJvE6KnndlFklWaZIJKcRWUnAddIwkMCY8ipa5VQn3CipnqjOc7yW052RpBvLpkT5BsoBYJ1UVj/ggqn2a7TO0yQ6BpJ5EhXrvM6rkyiVhsX/53/9f2/2HjYi3/C6FHHlU8hnJlIQc5PccCnKzVe6sF2xmI8vDzyRmgzk/2aY4eSFCqLx5d7r2rn59lefXQ+z0eP5+P52NJ+OL+Bbd5Iot6FuDscUPFNfEVU121aWxEyKcDSBG+Ai4VldbvHaxJO9cw4rk5ePcNJ4s05X/s8uEvu1U+MvTvsCRIomYQCTcBaxSFYFdywjc6vzCPCw26FDp9EwSSIij/JciN5GEFwuEkvJwNbrqJAciqFNQGbUTRZUfkhONntFUzFLeZaw0hdLIdOhFEAk9FdPYckUXBKxRNUhc5LxZbGSr0NlLuS3VT8CZb7P0u0wBlHpHroDE8DxS2By8E6pRukUj7hW/VdNmh5U9Wydv+BU0cJxK5eNdrTxeWreTS1VYwfe1L/Y9x92ay/kpkXRe0nqiFNVWfXJN/jh5ePF8GZ0dzmchu/ZP07H85Eps+dgiO0x7T4WVLGzCHfIv4k6OoZ763f/9C0xFgO8Ab+Nlk2aRgwH+030NlJzoK4sbfma9T3Rt5Hb+ZDEbSA3L0/enFJnKjygrPPJk5wpncEekiOPppilaYsTyaoXukkRS4Ly9p1C8JruMGDr0BRKjYg1nxzlyyVWVvKYi2c+E6uMpfj8H2TsEiJPFa9vG7Khr3g9FdkKuDd6mhWcPWGVFdYlZd70oITe6klKziVQycwlafyVycPnLH0CIlfwvEh5WFyYNKj7YbBP00NISFp9bknfJ3bzbycvb5EEJUYbIG2I9SDtJAhpdRZ9d/YdKBVTurKQ8ArUVtGPfDGdX5xG8zW3h6GqS842wGIUnJeDOh/Af6S5gvRxJFwjbV9TpDmD34st7mZL2QU8qKjhJZ7BTSnBOiqQdCWi5HENKk66O5GitmBlLWJRsKyOji/nN7PBbDqfvDk9OlHfQjsEZul4djmJ+McYTZXeQCNQz3Ay+aaKSjJNEdQPVFN6ffuGlJxeh+GaBHo90CeDUi9+4jV8I8+SAozdTqMf16zmMHaKcEEOeLhhQW9wUEUVvcDFDWiZ0iAmoorTvGpKHm2aSmoNf8B3YkbvG6XCNxVezVIcLDRCiKPxRF10QYamR2M2f7gjoi6yaFbDcfjdaYT7B8SZGajLK7bhg4zXkJEUq8yzSC26Zx7dDecIvRqObwBVbTd0t3hLPSuhBOja5w/TO9Aks63+xKX4yEHdoZZG1UAiIQ69Ljmqr8u8Wa3x2z6ImINEl5fVhyi2E8pHVZrX+yk+SvV8xWcB8kBgq0X8ZJluFyWoXrmyRAZ55J+mX41jfIWktGZPXF7II5FVIuFqYbks3ASK3IhFycrtgVXDkKiqUc+P1C6lOqQc9hD+7HN9zauIqZruT6Kjn09gvJu4wmtnWiCDU1S9RcuxKmL2/Qyv3vd3N3+G+5dctEm0AZ0mbBtNQeEeRxYa5Q+4h6I8G0h+Sb6maq2UUnLvxklFschZy2hgzao5sSBgbyJ/IpeIv7+0uYvu1lkEFmhIxE6szyXxhWdc8taxLAHWlmxl6lKsVpImV9uq5huQ1tWgwwHVSHT83R+/ffOD5motAxtS9SzzuIElfPzdP3775lCTlb23YnLqq9q2RAF2FDZrJ1PJynj9tYiX7PSeDX8lMjrLWZIojsrQGPXl+xk9NUQH0qLP37lPvSLKw3iR50+/6JJ4fzcfXsxney+A9kDt2FSy2BkS/+M3xMKpJvG+dZw39SBfaouv+xmW5eWbHyJaacdv5LVPDbe8KYZvhfIDOswuLtG9Ka5p/P2w9bL64x/Fx2g6ms33SqHBMOORuuvtKrl/kA1AzjIvt1d5OcLQH59p7+gFesCigZ5Wp6Rr5kS8ToHsDJDCmiXTPZdQw4C+9YyU1nhe4HEiGR05MdHxw1jxPhN8IXobzYZXb5CIFrwcoEHLqmRZLe33HOJmLcoI308i7D5aysR5AQxdyFBmLwXEWryJSkmRaJ05ZDtL9119Bn1WcueOMw0aT4aFqHwZrhYKD1WhyfhCosGPdC42vKrZpqBPqOT2/t35H74//Y4ExIFprM5g2AZVnBf27IGIlSbCldwfG7E9cMdv/Sl7Qxc2pz+hEwp2v2ROkmjBY7Dlg8bqtzAJUuoLpgtgHZkMazBRkDPvMm9EMwWepLJ6+mI6KxVZMOsIF578XCVMZiu+d8Gs8iSv/QWTs2TC5OmIZqx4JmbJV9M1X2OvXqFqXukXurc3ljnDEV6BYJ5nK5FxIJ1VNLqbj6ejmz+H7Z8156dUPL55LstYuq1FTE/q5sdXqAfIl8r6FFdRyeXFueRgoBLQGIHyBa7AoQVW52qB0cVYLxhRVzxdRiXHyEsRW+RNjd9ZwPXxuILhOgEFBHZK5NkbEAA+87Ry7oxSkQmGe6zcRjUHogsKLHnf1KsbP4Cu+fALbsg4wGgpXbD4qTqjYZauDfRyKp5h6QCvzlCwwJO3s+l4UIgs40l0+rMotEU5q9WxRrJnUN3whMRIkzIHoaDybzqFJftYSi+ER2j+WO5ZS9QwHV09zEYzGEOsDAyBWPyENcJosWgDFrAwz9Waff+HP0az6ThKBLA5sDBACLGNWLlBGe9buQnfvvDFG2mOLCr4TBgTlkVN9gzGIkDL1RjElLrsNILtVUUpDmqGA38xvHg3kjKavNzCth8k+UsGXwbK3hMQvGCeMjrZUacNss6meEPToN17zFx8Gw2LIpqBYin6/vQPp9+fmenRBlhMZNH15QxZO6U7hw8Br6GihDgDqHOH4QSBw1oUSDqR84cJ/maxjQoQ2sKm+AZNt1GkRwIWLv2to7ng5eAP0b/OItgcvFSDER3/7vR3px/fnOCiyMDwPBWxAEEVnBsFtF8QnYDVJ+jURON1FCXlmwJMvOjWkoEBqcjqswhJCCzl5VLEgqWaZsrreLRioPY/v5+/iwYDCNAwwMUAUzIYFKxeRwu+Br42ERVMwCPAHnOVZU3OOI8WeV5DB2E9kqgJhsim5wvaS1AzjD5YauFNaHh5CWtR1KfReImof4DK/gEXGh4fGx5lHI5FeF/U0pJe0gUQmmLYDUXJ0BnBTL5sthI/87MI1LQwRDglVJwlSRX91z99H92e4zU4w+sd0BLpx3D8X3/4/ek/AVpW9W30X9/98fSfATJ7Ecsax/h0WbINhzl9g5/4X99/Ty+Be2yklnD0NvqvP/7z6e8BIbKqhjgNKBdT03LMys0ffz94/meGg/NDNLyeKJXoaQXmBDDTKI5LYOjVezCamw0DAvhGLlFRRXlRDwQK3fCDYHmKCuRj6lDOl2jrAVK2LM8GeUFrFqmf/FoQE2Qk69yruF9DyKfY55BTtv1MR+ar7jnvx+fT4Xy0r8ucpS0rg4MUOT/JMDHBqzN75j/m5RNY3n2d+/M7/I7ZmpX7LY9ZQjfSquZFdRKtOSvrCCzOTyKe8XJFm/SF+i9leJCpnUfUClpagjIUa0GLa7h6OHJDKknmevv0quyZKIRucZs3SNFAcQ+N2Y3vuz4nnBz9y1Oa2idR68newWtR5a+3s6FG6FI9vJiP36N+8n46Hs0ezx+md6PLsB7Wfu9yPJsP77qMqe2So38fTS/GswNKvhsNp/NH3AB7y87mo8lsZzFSvH7C99GLB30gFdVf+JeTI7myRLddt3yVJs+KTDBlZD3Dh3JxHqlonMZIRyAzQuan1IByhzUz/VG1AJ9+f/c4e3f/4+NkNL0dz2Zgow4DPL6/G94AmUGjyX2dfC/4i+ko7gyrjzUrV7zWgM/3sWa4LUG0NQezOSyX9+OR/XmPD7PhNUzaIUN1SoVOCXMaruovjjdw+2V1Iz59NxrezN/ZQ40D/Bciu0JJnTanqzxfpfxU1cOKopIDhfE99oi31mbXfwZrMElDjDWYtP76mxjnXok6c+1yv1RvdhqnyRMDDpSl7pFloSbx0nTNMlIDDafTkGefu69i+f0H1dyWntDCOJNnjjJoAZsV2e6FVHIeSw7szak8pa4bARe8jEd/OP3u9HfYwWtcpMgKflP5NRR5KuJttMjrNQhCFujEAWwY9YF0OCAhYckzL2uBuLyMKp6iOlrUJ+TpABUYplhpgGX1aNILxInuI3bdIBIDftnqpaoH7qdedy3XUejVRt3c8LWLPKty1GuU6p7YSe//wZbbaLOdH4ADR7sc6DBds+o1r7hVutJ3VdLxk2kMx48A5h3c9klMHCU8EwwU1mYiM7xXKAnBy5qjAQAMghJrvjCocwmaGbzffAgwgB8iMvupog8ZRAOpAZ/x5AN+Oyl6UBWAXeCk+4kqsSnSrbZ7zHK4OxYpqdbhnm66aXE4ZjZqp4h1qZc3UVjb40vsgiW/mfOqvkohWhpdjqq9fLzYiEcgpW1/3/sCA4HGTVmSxnudVypGdQ64L62/g74NoG9nEbQHo0wmHIqbw9XzDApOy738RdTxOjqGRcrLN7B9oJ6zt2+jNcuSfLlUMi2ldKGtoU+CHxz/dRRvkDEGe+IZcchAZsGOhG2qvfJGwQr/ylEU5wLv72TPLl2cHT4XBNuZqNZzUEbqUA+wONn2haXpBRo3SJDic/HpIaM3eWK9K62C4zWJNtXPq7xE9x6Twb2kODxfTe45Hk5eI/WEwdy9np/4NqSJTkQFe/qLL1nV/FkkW5Q7Oc8GVVxynkWqBK5CFIwodfSLyJL85S0qimHBS8oLwgFwLmZkNfTEt1Vd5k+cRK9ax41PoOY+i5BeZCAhyxe0ltGSBmgd8BLJCUljwGseOze+HUULTlJAFNre7Ym48ENAw/Mp6msQjj4yzQI7M8YxMJeyTySj7M+7LB2f4bvZrCnwnLgRz4q9RuZz/4XSemP7+mtlwB222212Mr2/vZ+PLtv+s7u2DYzzQA3hzu2DRmGPQBDBc2m3rARdC4jo0N8hxpYpmhINopTQ5KeGN9AvZJfpASSW6mGU4T9bSdcUFf9cGtXd60+lPXC/0zjdKptZG4J2sxBBSJ+LYaER9D3Phkmif1+knJX66UZpKeHhTukpVxhjTQ4EPcqF2SF/+tUEt1A5JH5c82ycPVR8v0GXNBeTL2pZU8ZZuQDWCcLW7bfw0MkrDrPwUMU/X/dOvtYgfKoliVnnn2RGMry4GM1mj1fju9HjzT3RnDCNkiUv7ofTmVX2UCu5NLcYEc9Obg+Fs9dA9/Gsip1F9sKBm0E2ENkA5ORvIwW+Rd+PEg9qcMas1rkyRz02+590ACYMgnLxz5tKGjmjITHuxje+fUtoZEGHFRzGfWFH6B5FCpmmfAbDW0O38PoId7zZaDIEWaF9uzuLPqiRsYIZfDg94LDw3vnCEQK+4PYKbOJh+sK21TBLDm1ORvrAFsu8qVWYB62yrtQV2ozYofFLnBV+CDU8CYKtsKc9ufyVkstdZc+HF/8m463sLv8LArjsrrgjfMsvp+/dEWDM2t8f/0WVPVVr6zUBYHRDn3refKo8eUL6Wmvz/k1FuVY/LDmr7GRkTeMrZa2BE+NMCQSraHjz4/DPM3QczkvxM21w9OZRskFU2Ouz6kMrPM63cKNWR2wgGs5x56I4wavxv6iqT1TgHNCVy6s85BeK8myVw1lqR9HRXj73s8GGZQkZUGp3HHQtguGZ4mBEVVw2NchoeGV/gCZpa86eRbo9kzEirFs2nu2w5qUhSBaDtQpZbi4ZRKGO5D4kXkBKAdA2y4wGOfMc89PVafRNaR1Za4hoSScWKY1JYiHQpuQbaXTDohVojkUcfSM24N4tC/OPBWhrsph/cxqNPhYgQGZSXotiDJDcvYgKDae85e7YWbW9GpQJAzM+YbgdyPSo3LAU/ICMeOJttc1isN4fL6G74pmTnPmJc1hGJRoDwZCic5hlFIm330GyiMhTgOR+ynPizUkEueXk0Pvb/K3ZTDIAAkhmcRbw5M/QJI64ngG5JkXatGYfo4VWuY+FjL7ui7akwYm8ldpxXB0X1IzuiCrcYiFiWCjjbEI/AATmG+jYBO5z4CxNK4BgzyKX91plIUkX9kvTfsX5k/w3z1u+qn+S93xwW6UuVU9COqHSlVmFc1TOqPou3WQ+7MtJgj49ehylMHi1AOiXhFobXY6Hj5Ob4Z+BL3jNeb3rcNvo7+i+SblL8swiZG8hCoqSdqoCFKxMxlyUoTpVyEX1iPo9Q6UUzXYobSVnGo2CsQ+DFOOaAe1DYuEErVhAiNYla9K9vn+bPCAIahsHDdNa1A3md1jxWiaq2e0AzosLKSgDJQY8vxMgZN/OeN0Uv3apzm1+APOPH2gZGlGUDyTRPOXPNHXK8TnrMCP6fHcB6YOzgWhKcJri5TfY/G7BEn37jGeY9usvr78HzMfvx/M/P4LP9fXd+FWikApbPYXhRDmrDBTgMs0ne99fsBLC+Hzi23IMXy+OkbvpMzHHvxH7hl9mhkBDRoIpWnjR8cXthCc0f9G30cUtUB98euMEgqQVqsRVx/M/T0Zo6PV4cf9wNx9No7cRwibT0Wz2MB2p59vh9d1oPr54vBqPbi7fnMqKpEr7dbE0To5Cyx1V9spjAXyDXBPY7/7xW/wQskxG51U0sq45+IPgqkfeWq9i6aNAOxvYOeRtYV+DCE/aCJAWHtX5WiWPjRP/nHBYuVy3VEU1cLwlQ9VyvWYkoXlZg3UDHWPa2kDSEseyf7F1hInEJZtZPFNWDmTp8QEJ+PF/RrTFzqJvZKXfRH9984F6OLyZ3WuXX+u2gyHiMMoa8pWG1JCWm+pR6mpwrH/mxkAYP1dkYPaxyTE8wGaTg2sOMeBZDcOCvxfNCj74LrfGHY3atRU8jMVMbJqU1RCorqQa1axyiahOIwoeaR0CivZFaAjC0kiRHJznD/aBe/zmlKn1/gED78Mel1HPVeNylvUz3W1q8F/Au4lxZCH/EFy+8gyPwL4dV67seMIEqkV5EdV5zVKS8+oTnEIvMHT7lcraNzCM0vMTdLlkhI01zOb305G6Q2AB13HlrL3U6X4C0TGweZiuWJrb420UouXDTiEjIG08w2W4P/LDkAZF5FogwKq9EXLByDgzZIxCW51CGeEoZnn0H/kCZpOl4PIBdubobA8hZpMMbUpKWmPkaIKWAtAsWRN9U1mi6OFkfIKRNsjunKuhCR0TcHVvwPremMlDTEL92fB6iR4pS7lc35z6pkpyR+qo/nRTlfVTR2GBlWoD12pLfCATpQ+Whc0J0iP0NZOOAXIXQVB+9CEg4xFl0LTg2xyocYD+Ke8SaMkZHJL/w+JzwccdY/TmzLYsU/KMSl6IK28tKd8oWCa0qBpY0tF3/xgl4Ad4fxfN342iyxFcIk704pItMAoa94NesNIBHoKHoFUbrU6kuEwJCZSBTqLCS6rQAZHkdiNU5VeR9OBaihL1FAvN3kXHBo7k+o32OCFgQlFBMH4LA5ciCCRjDMSC40OWW9GHyrDdZ9H/xPtkQWaz//PoAx3pLE3xFqOixQB9p+FUvpB0vMOJP6jopo8rYpFjQYg6Eon6FZHczRm6P5p7nj1SJY9M7LulZLgLPmOIhf12PPfZJfZuON5zb7S/4wxYJV6CzKjTKfGYTC2v4EpIRwjcyVMINijDFqKhGxKX4fiNzioCV8HWBKgFRWRLzZPxMHRkTzTrSZ6XkohXIuUZSIyWGPvGXitxmjeePaPl1cWrmKXI4tS556CephvVeCXtIGVCDxDRqRwerSQhliLR2A/JicetdHsTgdngNc+G4+htdM03IhPRHctytJcbjmHS3hDZhOhCPEGzIdJKIl20LK436ZOoz1Y8Y2LwDx8iYvyjhBeQQSeL0RlusGBPXPv2kVuRIakqJSMZPSUJtNVg+h119TC3CUqhgmQCmBwMibRvcxQ8e2zKtNOG8auYK0Ijg6ZMz/B8IO5fSm4pkIgRY6NtDPjYDap4zTdAbKoaBu9mButdSjv+RPbvMyxSRcdge3laQNE3oCSWC4BF/5c0lP+/IVyhWMJRucBQtDDachCkyRfHZQYdQ06aZd9APhlYrAxi0KNP3rHInlkpgGH+7g9vTqNzsDbG2wAYUA5IPL/DQ0xZ1xTJ0psQUQ2tUL5fZVKKZIm2eCCIAvW39ownng2CcKEsqSjzmmRGyqmWzI1Z4hMNb2qBYbKYActd+eiEWpfJhKJ3w7vLGR289xcPt6O7eTS/j4Z39/N3oykEFbO8pcHl2ti0whdRqioSKJcbMlaGETx+80EfrVkknVfAJSMiRwsdcRXSV5HNYYL2gDrCGCDwwKVwZZpqUloolGMjF4MvGB5NdipOmdhgSbVs3xbJEhgf/JQavW4X4JaMPs54vURHf5LPI3FWc4Knu6Do10pdQMzYCX05WjBYgc5e8rJeRxsGV8AT/aUfJskSnG8+RBf3t5P7OxjpYxUiG6gO3NHBsFhHdFvwukYH3RwCQ+1d2BiFqR1zB7zbuuPugKPgXMXX+krSOzuk1zBJDk2tAF56MsSWiixrYnr9sohhu+s+zCThS3zVLzAXoDoHsq5D4q7QGxRBx2T88KLmTN7JQCvHznUD7XyxAtViJC1uMfnFG2muBMTeXnDyaN87eFYQgtNo9wyr8yzPtYYOz34IDfEzXHpTBqmQsi18ilUPOFxIru94PL+dDf7HP/7xn39HcT4gaqz9XchRPH9n2B36copZE30rFQh4v8P5ha/0rmd5Fn33u2/ffv8/vt3HRoDiCyM0PJLOz/dubihjI3jH8V9PYHKKCZeXFBTuV+KShnoemer0byq0pdHBo+FZDZBt0kCk/FXuaPhtFMTGrew9nB7or4UK/VLnA3u9NNhfimdSDV1Fi20t6cXDbDSFI6vi0TGjCFtyf5zYqvLnXGrRKIkEiyAUFsUFBIceLdUq+YCaJJ5obhJUxCVGuoCYEr6cBQK1srqms12ZQQBDoUKOqisMxlRFywSM2yNjh5gbsAwYogRmQmZ3P43mpdi4OneKGUMpLXJybSDv9KIA3U6D5gByuM6cO5nkgSH/hrolm1hJEOkDo01oLT+O5VuKZQs6ffgeW0wMIzewub3WpH2Q1OKDJUOhu5GJ0KRywCFLJ+poOvrTw3g6mkUfcIl9gI9ccCsOjUzSodzoeYksEtA5cT87iTYshn/6egDsHl9IL7cq+mBuZad+h091d3GhyKgYSsAi+3MajSUjVhpidqJiwIDXm1BGttRnFHv7TX1QLGcG8k4pJKTAUFLHGx2jJOktWRlgPKk3xOPBqH6Ijs1OkMPAUhhlGWFXRZjDOW83H56v2ejiYTqe/1kPMISMw0jNtIBux3fzGYa6wRdwpR8DJ1C9ff7926pZKJXgW9JNUzG4FL6R14l4DbcfUBowUI6DNDvLs+0GzIUhFTLKtJV418dEdQ4+aCCZXUA0ZdSnKOEzrSsZyzdOBWaqhn3MapJiYJQQTEioru5o/rKkrWjLP4lX1mFbYMcoupPTnYmGA6tVoy6qqsEsZtruCDqI4mx51wQYnukwsnhyR0ppBcIU2Ouc1SZUKREpBlFJ6rKp8BrQZKyuS7FoahNlaD/D3lTrYD7TYZqC3sbkNdVP4KpxqXQ8pMo/Z8lKKv5J2DWH2diZaMKuAbX/Jj19MJYIkNEm5aoXlWr0s94WfD6XFdWAZ8+izDMMbXx2JANryFxJB5jHwB6t+cA21dhnLDOBOXH4/UMCfezp62fwvdqj2S5Utz8D50aryEkq8zfhkagf+tYts8hYjE24wGtZmqbC7DLwXxKyY1nx+PKNa7dDXs24d7YoJsCX6L4B8ssrUXJwUDvRvyKWVrk8sQzXIQcKBGek5eAf65KFfBX32uBJs7dHoDll7osaKRepSQyRqszwuIvhq764pEt2cCA7eIYyxcpO7y2TzUsxnywvg/6gn6h6V58jJ6RFzYA2DpYl59FaanNUtHqyz9WJfIgfzVTlkSC71hRcWO86Xa5bCb1vH2ZzEjmi9Ocs+iArpCvxB9QCF4UypDwu0gYlQ3zRrMjx/Y0OIE95vSsMnkDK4rUoCjo9wPW6VOGv5AmVcvDIx/SaZRUVJNHeVDx9VucfSMC4/kRMmJYj/4Nx0JygBryWYn24DGPEdCKHcDGlWGa83O9DjvIH/ihDXO5W/8ABaztTfsZQp7v7CPGodneNinyFrlAalMdEMGVG3srjgjIKvMh7yVy+9DYNdO4sqmR2dIvlk+UozTteQRSjpTMgyGQYrCiQ69L54nlW5ml6ooJ2QszzkszGKVL1aTSGSBTQIrZfkdkJxckADkvRMNLxZrmlZJKh9MgeZP/CLTiP1/sWbJyvMvEzv8/QNwM/3M7tDj50KpMNPuhMNvIJyyH9QAvhzyie+WwJbJQQUkXYxwsr3czxrBNxLRPy2vLVGQ7flAboMCcsypEAQXfJHBNrkKGV+cd6r80jNfm5E+P8uj7/15Kf/lP5xpBw7W+RjZCypX8pERjN3Vmkv9bzEqka9KylVBYDjD06m8+RWyzNkkHDsSZFP4+BsgKgw5HC6OjarXDY6MCxjyEk6vOLHF6zJk13kk/MM/FIiryq5feRkRdFyZclr9azdV7WcfPVknfNRCkO3JBlkynpHB43yHHC+xBEXnX7dF/OdRqNgRyNsyjcBRRzgNSCEpDqbJRFEdGIVVIxiswc1LBvomtWPVWBEBEUoSRWaa+7pQA2O9aR0u1ChsBMvtLkTcEgBDShvywlYqmqcQm3rv0z1vmLEkzqOpVsC4x98NaSWFnadE7Gvaek/sA91k64dM7Q+ONfTMJE3Zvo+KCZkKJdyLF4Eu0YXZThf/dPlnHQv0RM5fkyyQGMOWRLsdhhuLZ3h4CBSjvKVbq9f+YlOZWhQM08Kj+eL85uY9fO8ERI86a0RfAQAi6rSRSBbPaGb3LtuMdROwLDJWreDtb0MG6FaPpaUZOalgFgyokfzlj8tIAUnl2D+omD2IgzK4IVNvdWNRZJd0EzEmppQdoXV23t3vrdTEsXJmo+rFVlZYRsmzTbwCD8rcj9L3RB32+28cIX8FW/MERF9yjJ+s/UkcM3C57AEfQjX4A5CkgWKilWINvFiJULUaOuWwXMh3jIYDGDimwWnUM5WCrKitYYv/xAKpemzpUOar9J1ov4+MgK8UWZFmgjZtVatBLouOZfaOfAk3k+YdvNZ0+2fEDMuc+he6euy6CIf0te/EqAkE4EU4PLXn6iY5J6Wwa7TAcveZmiF86Gg5ncMSSoAgbjLYkB3xalAFf0QZGyrEI5XMXrOiWBBSifZY1uHg6azUiunB9AgZxECZiKpZQlCOm0+JmqIavgCYNMw8rwm1Ewc1Igg6li6shI9h1iuG7XrG7bdU05OaJopk47IyuM66KsoV/6cFNdPjOuHaVsGwf6AuWflBoZw8r6801qfjQDIKu8it7BkEZKsm7U/9UPUIVRlBMt4mjjs4GkDSu8+9GJEHOi9/Wab5UFpjH/O4hUFSmrQbt6GL16zajuJmKQWa/CsZf9htAgbAtKcMy+kVHct2XKPw4ogQlF265qsAk3kJOjFUT/PKoKDM4AnUvFKhuImm8q8LuEJ5VOlCXoS3ymf8EYJJCwgP6/XYo0vWUff0QgpDMAl5yjM/UDBDYfB+qVjSmI3VyV+QvUpMoCO1QendF/2ltOnLujM+shgB+oCgKlljlq5uptka9KVqy3GoNpGPGrAc8/1kP8fXK0AFuVclCyRDQVdqvMeDmlR4WG1ugHQD4OqjVL8Kvoh24lh+HGmOrq18kRqyAixQAZNhh5fMRw6kp2SAsNknJXvH4LJvv8bZnXKtLJzwNguj8enR39PMYfmHuspl6lDfQJtPRSrHl2tBZJQqET8kro9SHiJ/TRKEUyqPkGFjhoXdJmk9Fn46+38j/oyJuNehpJI+2jv/71/wfTEJ3UlYcIAA=="
|
|
4120
|
+
sha256: "4c7c42d4baea297cc48bb87e10fb612ffcf7053f80ca78f45203b8622162e1b4",
|
|
4121
|
+
data: "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"
|
|
4096
4122
|
};
|
|
4097
4123
|
}
|
|
4098
4124
|
});
|
|
@@ -5910,7 +5936,7 @@ import { spawn } from "node:child_process";
|
|
|
5910
5936
|
import { createHash as createHash4 } from "node:crypto";
|
|
5911
5937
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
5912
5938
|
import { appendFileSync, closeSync, existsSync as existsSync6, lstatSync as lstatSync4, mkdirSync as mkdirSync5, openSync, readdirSync as readdirSync5, readFileSync as readFileSync7, readSync, renameSync as renameSync3, rmSync as rmSync2, statSync as statSync2, writeFileSync as writeFileSync5 } from "node:fs";
|
|
5913
|
-
import { isAbsolute, join as join8, relative, resolve as resolve5, sep as
|
|
5939
|
+
import { isAbsolute, join as join8, relative, resolve as resolve5, sep as sep3 } from "node:path";
|
|
5914
5940
|
function agentCovers(agent, cli) {
|
|
5915
5941
|
if (isCliEntry(agent)) return false;
|
|
5916
5942
|
const agentShas = shasOf(agent.images);
|
|
@@ -6223,7 +6249,7 @@ function formatBrief(input) {
|
|
|
6223
6249
|
const who = `himi \u2014 ${input.appName ?? "this folder"}`;
|
|
6224
6250
|
const lines = [];
|
|
6225
6251
|
if (!summary2.count) {
|
|
6226
|
-
lines.push(`${who}: no journey journal yet (${PROGRESS_FILE.split(
|
|
6252
|
+
lines.push(`${who}: no journey journal yet (${PROGRESS_FILE.split(sep3).join("/")}).`);
|
|
6227
6253
|
lines.push(
|
|
6228
6254
|
'A new app starts with discovery (step 1). An app built before journaling existed continues from its current state instead: confirm with the customer that its SPEC.md was approved rather than re-running discovery. Either way, journal each milestone with `himi progress "<what changed>" --step <n>` so the next session can pick up from it.'
|
|
6229
6255
|
);
|
|
@@ -6338,7 +6364,7 @@ var init_progress = __esm({
|
|
|
6338
6364
|
this.code = code;
|
|
6339
6365
|
}
|
|
6340
6366
|
};
|
|
6341
|
-
toPosix = (p2) => p2.split(
|
|
6367
|
+
toPosix = (p2) => p2.split(sep3).join("/");
|
|
6342
6368
|
UnsafeHimiDirError = class extends Error {
|
|
6343
6369
|
constructor(rel) {
|
|
6344
6370
|
super(`${rel} is not a real directory inside the content package (a symlink?) \u2014 refusing to write through it`);
|
|
@@ -7245,7 +7271,7 @@ var init_preview = __esm({
|
|
|
7245
7271
|
});
|
|
7246
7272
|
|
|
7247
7273
|
// src/mcp/client-configs.ts
|
|
7248
|
-
import { dirname as dirname7, relative as relative2, resolve as resolve7, sep as
|
|
7274
|
+
import { dirname as dirname7, relative as relative2, resolve as resolve7, sep as sep4 } from "node:path";
|
|
7249
7275
|
import { fileURLToPath as fileURLToPath4 } from "node:url";
|
|
7250
7276
|
function sourceCheckout(moduleUrl = import.meta.url) {
|
|
7251
7277
|
if (!moduleUrl.endsWith(".ts")) return null;
|
|
@@ -7343,7 +7369,7 @@ var init_client_configs = __esm({
|
|
|
7343
7369
|
HERE = dirname7(fileURLToPath4(import.meta.url));
|
|
7344
7370
|
inside = (child, parent) => {
|
|
7345
7371
|
const rel = relative2(parent, child);
|
|
7346
|
-
return rel === "" || !rel.startsWith("..") && !rel.startsWith(
|
|
7372
|
+
return rel === "" || !rel.startsWith("..") && !rel.startsWith(sep4) && !/^[A-Za-z]:/.test(rel);
|
|
7347
7373
|
};
|
|
7348
7374
|
same = (a2, b2) => JSON.stringify(a2) === JSON.stringify(b2);
|
|
7349
7375
|
out = (o2) => `${JSON.stringify(o2, null, 2)}
|
|
@@ -7721,7 +7747,7 @@ __export(build_lib_exports, {
|
|
|
7721
7747
|
umbrellaRewritePlugin: () => umbrellaRewritePlugin
|
|
7722
7748
|
});
|
|
7723
7749
|
import { fileURLToPath as fileURLToPath5, pathToFileURL } from "node:url";
|
|
7724
|
-
import { basename as basename3, dirname as dirname9, join as join11, resolve as resolve8, sep as
|
|
7750
|
+
import { basename as basename3, dirname as dirname9, join as join11, resolve as resolve8, sep as sep5 } from "node:path";
|
|
7725
7751
|
import { readdirSync as readdirSync6, existsSync as existsSync9, readFileSync as readFileSync10, realpathSync as realpathSync3, statSync as statSync3 } from "node:fs";
|
|
7726
7752
|
async function loadCompiler() {
|
|
7727
7753
|
try {
|
|
@@ -7769,7 +7795,7 @@ function realpathOrSelf(p2) {
|
|
|
7769
7795
|
}
|
|
7770
7796
|
}
|
|
7771
7797
|
function isUnder(p2, root) {
|
|
7772
|
-
return p2 === root || p2.startsWith(root +
|
|
7798
|
+
return p2 === root || p2.startsWith(root + sep5);
|
|
7773
7799
|
}
|
|
7774
7800
|
function confinementRoots(contentRoot2) {
|
|
7775
7801
|
const roots2 = /* @__PURE__ */ new Set();
|
|
@@ -8059,7 +8085,7 @@ function tsExtResolvePlugin() {
|
|
|
8059
8085
|
}
|
|
8060
8086
|
function importMetaUrlPlugin({ scope: scope2 } = {}) {
|
|
8061
8087
|
const scopes = scope2 ? [.../* @__PURE__ */ new Set([realpathOrSelf(scope2), resolve8(scope2)])] : [];
|
|
8062
|
-
const inScope = (p2) => scopes.some((r3) => p2 === r3 || p2.startsWith(r3 +
|
|
8088
|
+
const inScope = (p2) => scopes.some((r3) => p2 === r3 || p2.startsWith(r3 + sep5));
|
|
8063
8089
|
return {
|
|
8064
8090
|
name: "himalaya-import-meta-url",
|
|
8065
8091
|
setup(b2) {
|
|
@@ -8747,7 +8773,7 @@ var init_tier5_dir = __esm({
|
|
|
8747
8773
|
|
|
8748
8774
|
// src/tier5-typecheck.ts
|
|
8749
8775
|
import { existsSync as existsSync10, readFileSync as readFileSync11 } from "node:fs";
|
|
8750
|
-
import { relative as relative3, resolve as resolve10, sep as
|
|
8776
|
+
import { relative as relative3, resolve as resolve10, sep as sep6 } from "node:path";
|
|
8751
8777
|
import { pathToFileURL as pathToFileURL2 } from "node:url";
|
|
8752
8778
|
async function loadTypeScript() {
|
|
8753
8779
|
const runtime = process.env.HIMI_AUTHORING_RUNTIME_DIR;
|
|
@@ -8786,7 +8812,7 @@ function pathsFor(options) {
|
|
|
8786
8812
|
return declarationPaths(options.umbrellaDir);
|
|
8787
8813
|
}
|
|
8788
8814
|
function relativeFile(contentDir2, fileName) {
|
|
8789
|
-
return relative3(contentDir2, fileName).split(
|
|
8815
|
+
return relative3(contentDir2, fileName).split(sep6).join("/");
|
|
8790
8816
|
}
|
|
8791
8817
|
function belongsToContentWorkers(contentDir2, diagnostic) {
|
|
8792
8818
|
if (!diagnostic.file) return true;
|
|
@@ -8964,7 +8990,7 @@ var init_provisioning_facts = __esm({
|
|
|
8964
8990
|
// ../../core/dev-server/src/app-assets.ts
|
|
8965
8991
|
import { createHash as createHash6 } from "node:crypto";
|
|
8966
8992
|
import { existsSync as existsSync11, lstatSync as lstatSync7, readFileSync as readFileSync13, readdirSync as readdirSync8, realpathSync as realpathSync4, statSync as statSync4 } from "node:fs";
|
|
8967
|
-
import { join as join12, resolve as resolve12, sep as
|
|
8993
|
+
import { join as join12, resolve as resolve12, sep as sep7 } from "node:path";
|
|
8968
8994
|
function contentTypeFor(name) {
|
|
8969
8995
|
const ext = name.includes(".") ? name.slice(name.lastIndexOf(".") + 1).toLowerCase() : "";
|
|
8970
8996
|
return CONTENT_TYPES[ext] ?? "application/octet-stream";
|
|
@@ -8985,7 +9011,7 @@ function findAssetsDir(appDir3) {
|
|
|
8985
9011
|
const rel = typeof declared === "string" && declared ? declared : "assets";
|
|
8986
9012
|
const abs = resolve12(appDir3, rel);
|
|
8987
9013
|
const base = resolve12(appDir3);
|
|
8988
|
-
if (abs !== base && !abs.startsWith(base +
|
|
9014
|
+
if (abs !== base && !abs.startsWith(base + sep7)) return null;
|
|
8989
9015
|
return existsSync11(abs) && statSync4(abs).isDirectory() ? abs : null;
|
|
8990
9016
|
}
|
|
8991
9017
|
function readOtaOnlyPatterns(appDir3) {
|
|
@@ -9043,7 +9069,7 @@ function collectBrandFonts(appDir3) {
|
|
|
9043
9069
|
try {
|
|
9044
9070
|
if (!lstatSync7(path2).isFile()) continue;
|
|
9045
9071
|
const root = realpathSync4(appDir3);
|
|
9046
|
-
if (!realpathSync4(path2).startsWith(root +
|
|
9072
|
+
if (!realpathSync4(path2).startsWith(root + sep7)) continue;
|
|
9047
9073
|
} catch {
|
|
9048
9074
|
continue;
|
|
9049
9075
|
}
|
|
@@ -12521,8 +12547,8 @@ function textOf(node) {
|
|
|
12521
12547
|
function plainText(node) {
|
|
12522
12548
|
if (typeOf2(node) === "TEXT") return str(at(node, "textData", "text"));
|
|
12523
12549
|
const children = kids(node).filter(isObj);
|
|
12524
|
-
const
|
|
12525
|
-
return children.map(plainText).join(
|
|
12550
|
+
const sep22 = children.every((c2) => typeOf2(c2) === "TEXT") ? "" : "\n";
|
|
12551
|
+
return children.map(plainText).join(sep22);
|
|
12526
12552
|
}
|
|
12527
12553
|
function alignOf(v2) {
|
|
12528
12554
|
switch (v2) {
|
|
@@ -17908,14 +17934,14 @@ var init_hhp_command = __esm({
|
|
|
17908
17934
|
|
|
17909
17935
|
// src/hhp.ts
|
|
17910
17936
|
import { existsSync as existsSync16, readFileSync as readFileSync17, writeFileSync as writeFileSync8, mkdirSync as mkdirSync10, renameSync as renameSync4, rmSync as rmSync5, lstatSync as lstatSync8, readdirSync as readdirSync12 } from "node:fs";
|
|
17911
|
-
import { basename as basename6, dirname as dirname13, resolve as resolve18, relative as relative4, sep as
|
|
17937
|
+
import { basename as basename6, dirname as dirname13, resolve as resolve18, relative as relative4, sep as sep8, join as join15 } from "node:path";
|
|
17912
17938
|
import { createHash as createHash7, randomUUID as randomUUID3 } from "node:crypto";
|
|
17913
17939
|
import ts3 from "typescript";
|
|
17914
17940
|
function localPath(root, path2, from = join15(root, "hhp.json")) {
|
|
17915
17941
|
if (/^[a-z]+:|^\/\//i.test(path2)) throw new Error("HHP source dependencies must be local files.");
|
|
17916
17942
|
const target = resolve18(dirname13(from), path2), rel = relative4(resolve18(root), target);
|
|
17917
|
-
if (rel.startsWith(`..${
|
|
17918
|
-
const components2 = rel.split(
|
|
17943
|
+
if (rel.startsWith(`..${sep8}`) || rel === ".." || !rel || target === resolve18(root)) throw new Error("HHP source path escapes the app.");
|
|
17944
|
+
const components2 = rel.split(sep8);
|
|
17919
17945
|
let current = resolve18(root);
|
|
17920
17946
|
for (const component of components2) {
|
|
17921
17947
|
current = join15(current, component);
|
|
@@ -18038,13 +18064,13 @@ async function compileContentHhp(root, opts = {}) {
|
|
|
18038
18064
|
for (const dependency of result2.dependencies.filter((f2) => /\.tsx?$/.test(f2))) inspect2(dependency);
|
|
18039
18065
|
result2.manifest.requiredCapabilities = [...requiredCapabilities2].sort();
|
|
18040
18066
|
outputs.set(`dev/hhp/${id}.descriptor.json`, JSON.stringify(result2.descriptor, null, 2) + "\n");
|
|
18041
|
-
outputs.set(`dev/hhp/${id}.map.json`, JSON.stringify({ ...result2.manifest, nodes: Object.fromEntries(Object.entries(result2.sourceMap).map(([key3, node]) => [key3, { ...node, file: relative4(root, node.file).split(
|
|
18067
|
+
outputs.set(`dev/hhp/${id}.map.json`, JSON.stringify({ ...result2.manifest, nodes: Object.fromEntries(Object.entries(result2.sourceMap).map(([key3, node]) => [key3, { ...node, file: relative4(root, node.file).split(sep8).join("/") }])) }, null, 2) + "\n");
|
|
18042
18068
|
if (result2.worker && result2.bundleName) {
|
|
18043
18069
|
if (results.some((r3) => r3 !== result2 && r3.bundleName === result2.bundleName)) diagnostics.push({ code: "HHP-BUNDLE-ID", severity: "error", file: file2, line: 1, column: 1, message: "Screen ids normalize to the same bundle name." });
|
|
18044
18070
|
const workerRel = `tier5-src/${result2.bundleName}/index.ts`;
|
|
18045
18071
|
let worker = result2.worker;
|
|
18046
18072
|
for (const dependency of result2.dependencies.filter((f2) => /\.(controller|service)\.tsx?$/.test(f2)))
|
|
18047
|
-
worker = worker.replace(JSON.stringify(dependency), JSON.stringify(relative4(dirname13(join15(root, workerRel)), dependency).split(
|
|
18073
|
+
worker = worker.replace(JSON.stringify(dependency), JSON.stringify(relative4(dirname13(join15(root, workerRel)), dependency).split(sep8).join("/").replace(/\.tsx?$/, ".js")));
|
|
18048
18074
|
outputs.set(workerRel, worker);
|
|
18049
18075
|
}
|
|
18050
18076
|
}
|
|
@@ -27549,7 +27575,7 @@ function redactBodyString(body) {
|
|
|
27549
27575
|
} catch {
|
|
27550
27576
|
}
|
|
27551
27577
|
}
|
|
27552
|
-
return body.replace(FORM_ASSIGNMENT_RE, (m2, name) => isSensitiveBodyName(name) ? `${name}=${REDACTED}` : m2).replace(JSON_FIELD_RE, (m2, name,
|
|
27578
|
+
return body.replace(FORM_ASSIGNMENT_RE, (m2, name) => isSensitiveBodyName(name) ? `${name}=${REDACTED}` : m2).replace(JSON_FIELD_RE, (m2, name, sep22) => isSensitiveBodyName(name) ? `"${name}"${sep22}"${REDACTED}"` : m2).replace(JSON_FIELD_UNTERMINATED_RE, (m2, name, sep22) => isSensitiveBodyName(name) ? `"${name}"${sep22}"${REDACTED}` : m2).replace(BEARER_RE, (_m, s2) => `${s2} ${REDACTED}`);
|
|
27553
27579
|
}
|
|
27554
27580
|
function createWixGatewayState() {
|
|
27555
27581
|
return { mode: "record", rules: [], traffic: [], clients: /* @__PURE__ */ new Set(), seq: 0, ruleSeq: 0 };
|
|
@@ -32008,10 +32034,10 @@ async function runRicosImageUpload(o2) {
|
|
|
32008
32034
|
} catch {
|
|
32009
32035
|
return fail6("read");
|
|
32010
32036
|
}
|
|
32011
|
-
const
|
|
32037
|
+
const sep22 = entry.uploadUrl.includes("?") ? "&" : "?";
|
|
32012
32038
|
let res;
|
|
32013
32039
|
try {
|
|
32014
|
-
res = await deps.fetch(`${entry.uploadUrl}${
|
|
32040
|
+
res = await deps.fetch(`${entry.uploadUrl}${sep22}filename=${encodeURIComponent(file2.fileName)}`, { method: "PUT", headers: { "Content-Type": file2.mimeType }, body });
|
|
32015
32041
|
} catch {
|
|
32016
32042
|
return fail6("put");
|
|
32017
32043
|
}
|
|
@@ -32649,10 +32675,10 @@ async function runMediaFieldUpload(o2) {
|
|
|
32649
32675
|
} catch (e2) {
|
|
32650
32676
|
return { ok: false, reason: e2 instanceof Deadline ? "timeout" : "read" };
|
|
32651
32677
|
}
|
|
32652
|
-
const
|
|
32678
|
+
const sep22 = uploadUrl.includes("?") ? "&" : "?";
|
|
32653
32679
|
let res;
|
|
32654
32680
|
try {
|
|
32655
|
-
res = await bounded2(deps.fetch(`${uploadUrl}${
|
|
32681
|
+
res = await bounded2(deps.fetch(`${uploadUrl}${sep22}filename=${encodeURIComponent(file2.fileName)}`, {
|
|
32656
32682
|
method: "PUT",
|
|
32657
32683
|
headers: { "Content-Type": file2.mimeType },
|
|
32658
32684
|
body,
|
|
@@ -115774,8 +115800,8 @@ function ensureCountUpRuntime() {
|
|
|
115774
115800
|
const neg = fixed.startsWith("-");
|
|
115775
115801
|
const body = neg ? fixed.slice(1) : fixed;
|
|
115776
115802
|
const [int2, frac] = body.split(".");
|
|
115777
|
-
const
|
|
115778
|
-
return (neg ? "-" : "") +
|
|
115803
|
+
const sep22 = int2.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
115804
|
+
return (neg ? "-" : "") + sep22 + (frac ? "." + frac : "");
|
|
115779
115805
|
};
|
|
115780
115806
|
const animateEl = (el2) => {
|
|
115781
115807
|
const node = el2;
|
|
@@ -126441,7 +126467,7 @@ var init_widgets = __esm({
|
|
|
126441
126467
|
import { createServer as createServer2 } from "node:http";
|
|
126442
126468
|
import { readFile, stat } from "node:fs/promises";
|
|
126443
126469
|
import { readFileSync as readFileSync32, existsSync as existsSync28, watch, mkdirSync as mkdirSync15, rmSync as rmSync7 } from "node:fs";
|
|
126444
|
-
import { basename as basename8, dirname as dirname20, extname as extname2, join as join24, relative as relative5, resolve as resolve28, normalize as normalize3, sep as
|
|
126470
|
+
import { basename as basename8, dirname as dirname20, extname as extname2, join as join24, relative as relative5, resolve as resolve28, normalize as normalize3, sep as sep9 } from "node:path";
|
|
126445
126471
|
import { createHash as createHash16, randomUUID as randomUUID4 } from "node:crypto";
|
|
126446
126472
|
import { fileURLToPath as fileURLToPath19, pathToFileURL as pathToFileURL5 } from "node:url";
|
|
126447
126473
|
function readLogicBundle(read, tier5Dir, name) {
|
|
@@ -127310,7 +127336,7 @@ function startBundleSourceWatcher(state) {
|
|
|
127310
127336
|
try {
|
|
127311
127337
|
const watcher2 = watch(TIER5_SRC_ROOT, { persistent: false, recursive: true }, (_event, filename) => {
|
|
127312
127338
|
if (!filename || !/\.(ts|tsx)$/.test(filename)) return;
|
|
127313
|
-
const name = filename.split(
|
|
127339
|
+
const name = filename.split(sep9)[0];
|
|
127314
127340
|
if (!name || name.startsWith(".")) return;
|
|
127315
127341
|
pending.add(name);
|
|
127316
127342
|
if (timer) clearTimeout(timer);
|
|
@@ -127458,12 +127484,12 @@ function servedTokensHash(app) {
|
|
|
127458
127484
|
}
|
|
127459
127485
|
}
|
|
127460
127486
|
function appDependencyFiles(inputs, appDir3) {
|
|
127461
|
-
const inside2 = (root, p2) => p2 === root || p2.startsWith(root +
|
|
127487
|
+
const inside2 = (root, p2) => p2 === root || p2.startsWith(root + sep9);
|
|
127462
127488
|
const out2 = /* @__PURE__ */ new Set();
|
|
127463
127489
|
for (const raw of inputs) {
|
|
127464
127490
|
const p2 = resolve28(raw);
|
|
127465
127491
|
if (!inside2(ROOT6, p2) || inside2(resolve28(appDir3), p2) || inside2(HMR_TMP_DIR, p2)) continue;
|
|
127466
|
-
if (p2.split(
|
|
127492
|
+
if (p2.split(sep9).includes("node_modules")) continue;
|
|
127467
127493
|
out2.add(p2);
|
|
127468
127494
|
}
|
|
127469
127495
|
return [...out2].sort();
|
|
@@ -127581,7 +127607,7 @@ function startAppSourceWatcher(state) {
|
|
|
127581
127607
|
try {
|
|
127582
127608
|
const watcher2 = watch(appDir3, { persistent: false, recursive: true }, (_event, filename) => {
|
|
127583
127609
|
if (!filename) return;
|
|
127584
|
-
const rel = String(filename).split(
|
|
127610
|
+
const rel = String(filename).split(sep9).join("/");
|
|
127585
127611
|
if (!classifyAppPath(rel)) return;
|
|
127586
127612
|
pending.add(rel);
|
|
127587
127613
|
if (timer) clearTimeout(timer);
|
|
@@ -129925,7 +129951,7 @@ var init_src5 = __esm({
|
|
|
129925
129951
|
|
|
129926
129952
|
// ../../core/serve-storage/src/file-store.ts
|
|
129927
129953
|
import { mkdirSync as mkdirSync16, readFileSync as readFileSync33, rmSync as rmSync8, writeFileSync as writeFileSync10, readdirSync as readdirSync16, existsSync as existsSync29 } from "node:fs";
|
|
129928
|
-
import { join as join25, resolve as resolve29, sep as
|
|
129954
|
+
import { join as join25, resolve as resolve29, sep as sep10 } from "node:path";
|
|
129929
129955
|
var FileReleaseStore;
|
|
129930
129956
|
var init_file_store = __esm({
|
|
129931
129957
|
"../../core/serve-storage/src/file-store.ts"() {
|
|
@@ -129962,7 +129988,7 @@ var init_file_store = __esm({
|
|
|
129962
129988
|
*/
|
|
129963
129989
|
appDir(app) {
|
|
129964
129990
|
const dir = resolve29(this.root, this.safe(app));
|
|
129965
|
-
if (!dir.startsWith(this.root +
|
|
129991
|
+
if (!dir.startsWith(this.root + sep10)) {
|
|
129966
129992
|
throw new Error(`unsafe app id ${JSON.stringify(app)}: ${dir} is not inside the store root`);
|
|
129967
129993
|
}
|
|
129968
129994
|
return dir;
|
|
@@ -131551,14 +131577,15 @@ function usageStringCopyFor(permissionCopy) {
|
|
|
131551
131577
|
}
|
|
131552
131578
|
return out2;
|
|
131553
131579
|
}
|
|
131554
|
-
var BRIDGE_CAPABILITY_IDS, KNOWN_CAPABILITY_IDS, CAPABILITY_LITERAL, BRIDGE_MARKERS, NEEDS_BOOT_WIRING, NOT_DIST_ADDABLE;
|
|
131580
|
+
var BRIDGE_CAPABILITY_IDS, APP_SERVICES_BRIDGE_MARKERS2, KNOWN_CAPABILITY_IDS, CAPABILITY_LITERAL, APP_ACTION_DISPATCH, BRIDGE_MARKERS, NEEDS_BOOT_WIRING, NOT_DIST_ADDABLE;
|
|
131555
131581
|
var init_known = __esm({
|
|
131556
131582
|
"../../core/sdk/capability-catalog/src/known.ts"() {
|
|
131557
131583
|
init_builtins();
|
|
131558
131584
|
init_implications();
|
|
131559
131585
|
init_native_requirements();
|
|
131560
131586
|
init_modules();
|
|
131561
|
-
BRIDGE_CAPABILITY_IDS = Object.freeze(["stream", "wix_api"]);
|
|
131587
|
+
BRIDGE_CAPABILITY_IDS = Object.freeze(["app_services", "stream", "wix_api"]);
|
|
131588
|
+
APP_SERVICES_BRIDGE_MARKERS2 = Object.freeze(["__himalaya_app_read", "__himalaya_app_dispatch"]);
|
|
131562
131589
|
KNOWN_CAPABILITY_IDS = Object.freeze(
|
|
131563
131590
|
[
|
|
131564
131591
|
.../* @__PURE__ */ new Set([
|
|
@@ -131571,7 +131598,9 @@ var init_known = __esm({
|
|
|
131571
131598
|
].sort()
|
|
131572
131599
|
);
|
|
131573
131600
|
CAPABILITY_LITERAL = /["'`]capability\.([a-z0-9_]+)(?:\.([A-Za-z0-9_]+))?["'`]/g;
|
|
131601
|
+
APP_ACTION_DISPATCH = /(?:(?<![\w$.])|\bhimalaya\??\.|\bimport_[\w$]+\.)dispatch\d*\)?\s*\(\s*["'`]app\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+["'`]/;
|
|
131574
131602
|
BRIDGE_MARKERS = [
|
|
131603
|
+
["app_services", new RegExp(`\\b(?:${APP_SERVICES_BRIDGE_MARKERS2.join("|")})\\b|${APP_ACTION_DISPATCH.source}`)],
|
|
131575
131604
|
["wix_api", /himalaya\.wixApi\b|\bwixApi\.call\b/],
|
|
131576
131605
|
["webview", /himalaya\.webview\b/]
|
|
131577
131606
|
];
|
|
@@ -133738,8 +133767,8 @@ async function crawlScreenInner(opts) {
|
|
|
133738
133767
|
if (linkable.has(target)) return true;
|
|
133739
133768
|
for (const base of linkable) {
|
|
133740
133769
|
if (target.length > base.length + 1 && target.startsWith(base)) {
|
|
133741
|
-
const
|
|
133742
|
-
if (
|
|
133770
|
+
const sep22 = target[base.length];
|
|
133771
|
+
if (sep22 === "_" || sep22 === "/") return true;
|
|
133743
133772
|
}
|
|
133744
133773
|
}
|
|
133745
133774
|
return false;
|
|
@@ -134887,6 +134916,7 @@ var init_binary_core = __esm({
|
|
|
134887
134916
|
// ../../core/sdk/capability-catalog/src/index.ts
|
|
134888
134917
|
var src_exports2 = {};
|
|
134889
134918
|
__export(src_exports2, {
|
|
134919
|
+
APP_SERVICES_BRIDGE_MARKERS: () => APP_SERVICES_BRIDGE_MARKERS2,
|
|
134890
134920
|
BINARY_CORE_ANDROID_PUBLISH_BUILDS: () => BINARY_CORE_ANDROID_PUBLISH_BUILDS,
|
|
134891
134921
|
BINARY_CORE_IOS_PATH_ONLY_SATELLITES: () => BINARY_CORE_IOS_PATH_ONLY_SATELLITES,
|
|
134892
134922
|
BINARY_CORE_IOS_SATELLITES: () => BINARY_CORE_IOS_SATELLITES,
|
|
@@ -137604,13 +137634,13 @@ __export(studio_exports, {
|
|
|
137604
137634
|
});
|
|
137605
137635
|
import { createHash as createHash21 } from "node:crypto";
|
|
137606
137636
|
import { existsSync as existsSync33, readdirSync as readdirSync19, readFileSync as readFileSync37, realpathSync as realpathSync6, statSync as statSync7 } from "node:fs";
|
|
137607
|
-
import { basename as basename9, extname as extname3, join as join29, relative as relative6, resolve as resolve31, sep as
|
|
137637
|
+
import { basename as basename9, extname as extname3, join as join29, relative as relative6, resolve as resolve31, sep as sep11 } from "node:path";
|
|
137608
137638
|
import { pathToFileURL as pathToFileURL6 } from "node:url";
|
|
137609
137639
|
function realInside(dir, abs) {
|
|
137610
137640
|
try {
|
|
137611
137641
|
const root = realpathSync6(dir);
|
|
137612
137642
|
const real = realpathSync6(abs);
|
|
137613
|
-
return real.startsWith(root +
|
|
137643
|
+
return real.startsWith(root + sep11) ? real : null;
|
|
137614
137644
|
} catch {
|
|
137615
137645
|
return null;
|
|
137616
137646
|
}
|
|
@@ -141907,21 +141937,21 @@ var init_Matcher = __esm({
|
|
|
141907
141937
|
* @returns {string}
|
|
141908
141938
|
*/
|
|
141909
141939
|
toString(separator, includeNamespace = true) {
|
|
141910
|
-
const
|
|
141911
|
-
const isDefault =
|
|
141940
|
+
const sep22 = separator || this.separator;
|
|
141941
|
+
const isDefault = sep22 === this.separator && includeNamespace === true;
|
|
141912
141942
|
if (isDefault) {
|
|
141913
141943
|
if (this._pathStringCache !== null) {
|
|
141914
141944
|
return this._pathStringCache;
|
|
141915
141945
|
}
|
|
141916
141946
|
const result = this.path.map(
|
|
141917
141947
|
(n2) => n2.namespace ? `${n2.namespace}:${n2.tag}` : n2.tag
|
|
141918
|
-
).join(
|
|
141948
|
+
).join(sep22);
|
|
141919
141949
|
this._pathStringCache = result;
|
|
141920
141950
|
return result;
|
|
141921
141951
|
}
|
|
141922
141952
|
return this.path.map(
|
|
141923
141953
|
(n2) => includeNamespace && n2.namespace ? `${n2.namespace}:${n2.tag}` : n2.tag
|
|
141924
|
-
).join(
|
|
141954
|
+
).join(sep22);
|
|
141925
141955
|
}
|
|
141926
141956
|
/**
|
|
141927
141957
|
* Get path as array of tag names.
|
|
@@ -142623,76 +142653,76 @@ var init_redos = __esm({
|
|
|
142623
142653
|
});
|
|
142624
142654
|
|
|
142625
142655
|
// ../../node_modules/is-unsafe/src/contexts/nosql.js
|
|
142626
|
-
var
|
|
142656
|
+
var sep12, NOSQL_PATTERNS, nosql_default;
|
|
142627
142657
|
var init_nosql = __esm({
|
|
142628
142658
|
"../../node_modules/is-unsafe/src/contexts/nosql.js"() {
|
|
142629
|
-
|
|
142659
|
+
sep12 = `["'\\s]*:`;
|
|
142630
142660
|
NOSQL_PATTERNS = [
|
|
142631
142661
|
// ─── MongoDB $ operator injection ────────────────────────────────────────
|
|
142632
142662
|
{
|
|
142633
142663
|
id: "nosql-where-operator",
|
|
142634
142664
|
description: "$where \u2014 executes arbitrary JavaScript server-side in MongoDB",
|
|
142635
|
-
pattern: new RegExp(`\\$where${
|
|
142665
|
+
pattern: new RegExp(`\\$where${sep12}`, "i")
|
|
142636
142666
|
},
|
|
142637
142667
|
{
|
|
142638
142668
|
id: "nosql-ne-operator",
|
|
142639
142669
|
description: '$ne \u2014 "not equal" operator used to bypass equality checks',
|
|
142640
|
-
pattern: new RegExp(`\\$ne${
|
|
142670
|
+
pattern: new RegExp(`\\$ne${sep12}`, "i")
|
|
142641
142671
|
},
|
|
142642
142672
|
{
|
|
142643
142673
|
id: "nosql-gt-operator",
|
|
142644
142674
|
description: '$gt \u2014 "greater than" used to bypass password/value checks',
|
|
142645
|
-
pattern: new RegExp(`\\$gte?${
|
|
142675
|
+
pattern: new RegExp(`\\$gte?${sep12}`, "i")
|
|
142646
142676
|
},
|
|
142647
142677
|
{
|
|
142648
142678
|
id: "nosql-lt-operator",
|
|
142649
142679
|
description: '$lt / $lte \u2014 "less than" bypass variants',
|
|
142650
|
-
pattern: new RegExp(`\\$lte?${
|
|
142680
|
+
pattern: new RegExp(`\\$lte?${sep12}`, "i")
|
|
142651
142681
|
},
|
|
142652
142682
|
{
|
|
142653
142683
|
id: "nosql-regex-operator",
|
|
142654
142684
|
description: "$regex \u2014 can be used to extract data character by character (blind injection)",
|
|
142655
|
-
pattern: new RegExp(`\\$regex${
|
|
142685
|
+
pattern: new RegExp(`\\$regex${sep12}`, "i")
|
|
142656
142686
|
},
|
|
142657
142687
|
{
|
|
142658
142688
|
id: "nosql-or-operator",
|
|
142659
142689
|
description: "$or \u2014 logical OR; used to create always-true conditions",
|
|
142660
|
-
pattern: new RegExp(`\\$or${
|
|
142690
|
+
pattern: new RegExp(`\\$or${sep12}\\s*\\[`, "i")
|
|
142661
142691
|
},
|
|
142662
142692
|
{
|
|
142663
142693
|
id: "nosql-and-operator",
|
|
142664
142694
|
description: "$and \u2014 logical AND operator injection",
|
|
142665
|
-
pattern: new RegExp(`\\$and${
|
|
142695
|
+
pattern: new RegExp(`\\$and${sep12}\\s*\\[`, "i")
|
|
142666
142696
|
},
|
|
142667
142697
|
{
|
|
142668
142698
|
id: "nosql-nor-operator",
|
|
142669
142699
|
description: "$nor \u2014 logical NOR operator injection",
|
|
142670
|
-
pattern: new RegExp(`\\$nor${
|
|
142700
|
+
pattern: new RegExp(`\\$nor${sep12}\\s*\\[`, "i")
|
|
142671
142701
|
},
|
|
142672
142702
|
{
|
|
142673
142703
|
id: "nosql-exists-operator",
|
|
142674
142704
|
description: "$exists \u2014 can enumerate fields to determine schema",
|
|
142675
|
-
pattern: new RegExp(`\\$exists${
|
|
142705
|
+
pattern: new RegExp(`\\$exists${sep12}`, "i")
|
|
142676
142706
|
},
|
|
142677
142707
|
{
|
|
142678
142708
|
id: "nosql-in-operator",
|
|
142679
142709
|
description: "$in \u2014 matches any value in a list; can enumerate values",
|
|
142680
|
-
pattern: new RegExp(`\\$in${
|
|
142710
|
+
pattern: new RegExp(`\\$in${sep12}\\s*\\[`, "i")
|
|
142681
142711
|
},
|
|
142682
142712
|
{
|
|
142683
142713
|
id: "nosql-expr-operator",
|
|
142684
142714
|
description: "$expr \u2014 allows aggregation expressions in queries (MongoDB 3.6+)",
|
|
142685
|
-
pattern: new RegExp(`\\$expr${
|
|
142715
|
+
pattern: new RegExp(`\\$expr${sep12}`, "i")
|
|
142686
142716
|
},
|
|
142687
142717
|
{
|
|
142688
142718
|
id: "nosql-function-operator",
|
|
142689
142719
|
description: "$function \u2014 executes arbitrary JavaScript in MongoDB 4.4+",
|
|
142690
|
-
pattern: new RegExp(`\\$function${
|
|
142720
|
+
pattern: new RegExp(`\\$function${sep12}`, "i")
|
|
142691
142721
|
},
|
|
142692
142722
|
{
|
|
142693
142723
|
id: "nosql-accumulator-operator",
|
|
142694
142724
|
description: "$accumulator \u2014 custom aggregation with arbitrary JS execution",
|
|
142695
|
-
pattern: new RegExp(`\\$accumulator${
|
|
142725
|
+
pattern: new RegExp(`\\$accumulator${sep12}`, "i")
|
|
142696
142726
|
},
|
|
142697
142727
|
// ─── Prototype pollution ─────────────────────────────────────────────────
|
|
142698
142728
|
{
|
|
@@ -148536,7 +148566,7 @@ __export(app_source_exports, {
|
|
|
148536
148566
|
});
|
|
148537
148567
|
import { createHash as createHash25 } from "node:crypto";
|
|
148538
148568
|
import { readdirSync as readdirSync24, lstatSync as lstatSync13, readFileSync as readFileSync49, mkdirSync as mkdirSync23, writeFileSync as writeFileSync18, existsSync as existsSync42, rmSync as rmSync13, rmdirSync as rmdirSync2, unlinkSync as unlinkSync3 } from "node:fs";
|
|
148539
|
-
import { join as join38, resolve as resolve40, sep as
|
|
148569
|
+
import { join as join38, resolve as resolve40, sep as sep13 } from "node:path";
|
|
148540
148570
|
import { createRequire as createRequire3 } from "node:module";
|
|
148541
148571
|
import { deflateRawSync as deflateRawSync2 } from "node:zlib";
|
|
148542
148572
|
function walkSourceTree(dir, file2, skip, enter = () => {
|
|
@@ -148559,7 +148589,7 @@ function walkSourceTree(dir, file2, skip, enter = () => {
|
|
|
148559
148589
|
skip(rel);
|
|
148560
148590
|
continue;
|
|
148561
148591
|
}
|
|
148562
|
-
file2(rel.split(
|
|
148592
|
+
file2(rel.split(sep13).join("/"), rel);
|
|
148563
148593
|
}
|
|
148564
148594
|
};
|
|
148565
148595
|
walk2("");
|
|
@@ -148619,8 +148649,8 @@ function renderInputRootDirs(dir) {
|
|
|
148619
148649
|
}
|
|
148620
148650
|
function newestSourceChangeMs(dir) {
|
|
148621
148651
|
const roots2 = renderInputRootDirs(dir);
|
|
148622
|
-
const inRead = (hostRel) => !roots2 || roots2.has(hostRel.split(
|
|
148623
|
-
const counts = (hostRel) => !hostRel.includes(
|
|
148652
|
+
const inRead = (hostRel) => !roots2 || roots2.has(hostRel.split(sep13)[0]);
|
|
148653
|
+
const counts = (hostRel) => !hostRel.includes(sep13) || inRead(hostRel);
|
|
148624
148654
|
let newest = 0;
|
|
148625
148655
|
walkSourceTree(
|
|
148626
148656
|
dir,
|
|
@@ -148782,7 +148812,7 @@ function pruneEmptyDirs(root, rel, needed, removed) {
|
|
|
148782
148812
|
let empty2 = true;
|
|
148783
148813
|
for (const name of readdirSync24(rel ? join38(root, rel) : root)) {
|
|
148784
148814
|
const childRel = rel ? join38(rel, name) : name;
|
|
148785
|
-
const posix5 = childRel.split(
|
|
148815
|
+
const posix5 = childRel.split(sep13).join("/");
|
|
148786
148816
|
const kind = lstatSync13(join38(root, childRel));
|
|
148787
148817
|
if (kind.isSymbolicLink() || !kind.isDirectory() || isDeniedSourceDir(name, rel)) {
|
|
148788
148818
|
empty2 = false;
|
|
@@ -148866,7 +148896,7 @@ __export(run_watch_exports, {
|
|
|
148866
148896
|
});
|
|
148867
148897
|
import { closeSync as closeSync4, constants as constants3, existsSync as existsSync43, fstatSync, lstatSync as lstatSync14, statSync as statSync14, readdirSync as readdirSync25, mkdirSync as mkdirSync24, openSync as openSync4, readFileSync as readFileSync50, realpathSync as realpathSync8, renameSync as renameSync10, rmSync as rmSync14, writeFileSync as writeFileSync19, watch as fsWatch } from "node:fs";
|
|
148868
148898
|
import { randomUUID as randomUUID7 } from "node:crypto";
|
|
148869
|
-
import { extname as extname4, join as join39, relative as relative8, resolve as resolve41, sep as
|
|
148899
|
+
import { extname as extname4, join as join39, relative as relative8, resolve as resolve41, sep as sep14 } from "node:path";
|
|
148870
148900
|
function diffReleases(prev, next) {
|
|
148871
148901
|
const bundles = Object.keys(next.bundles).filter((b2) => prev.bundles[b2]?.sha256 !== next.bundles[b2].sha256).sort();
|
|
148872
148902
|
const changedBundles = new Set(bundles);
|
|
@@ -148894,7 +148924,7 @@ function reloadEvents(d2) {
|
|
|
148894
148924
|
function hhpRasterDir(dir) {
|
|
148895
148925
|
const assets = findAssetsDir(dir);
|
|
148896
148926
|
if (!assets) return null;
|
|
148897
|
-
const rel = relative8(dir, assets).split(
|
|
148927
|
+
const rel = relative8(dir, assets).split(sep14).join("/");
|
|
148898
148928
|
return rel ? `${rel}/hhp-raster` : "hhp-raster";
|
|
148899
148929
|
}
|
|
148900
148930
|
function ignoredChange(relPath, isDirectory = () => false, rasterDir = "assets/hhp-raster") {
|
|
@@ -149121,7 +149151,7 @@ function boardFile(dir, pathname) {
|
|
|
149121
149151
|
function readConfined(root, rel) {
|
|
149122
149152
|
try {
|
|
149123
149153
|
if (!lstatSync14(root).isDirectory()) return null;
|
|
149124
|
-
const parts = rel.split(
|
|
149154
|
+
const parts = rel.split(sep14);
|
|
149125
149155
|
let at2 = root;
|
|
149126
149156
|
for (let i2 = 0; i2 < parts.length; i2++) {
|
|
149127
149157
|
at2 = join39(at2, parts[i2]);
|
|
@@ -149129,7 +149159,7 @@ function readConfined(root, rel) {
|
|
|
149129
149159
|
if (st2.isSymbolicLink() || !(i2 === parts.length - 1 ? st2.isFile() : st2.isDirectory())) return null;
|
|
149130
149160
|
}
|
|
149131
149161
|
const canonicalRoot = realpathSync8(root);
|
|
149132
|
-
if (!realpathSync8(at2).startsWith(canonicalRoot +
|
|
149162
|
+
if (!realpathSync8(at2).startsWith(canonicalRoot + sep14)) return null;
|
|
149133
149163
|
const fd = openSync4(at2, constants3.O_RDONLY | (constants3.O_NOFOLLOW ?? 0));
|
|
149134
149164
|
try {
|
|
149135
149165
|
if (!fstatSync(fd).isFile()) return null;
|
|
@@ -149640,13 +149670,13 @@ import { createHash as createHash28, randomUUID as randomUUID8 } from "node:cryp
|
|
|
149640
149670
|
import { spawn as spawn4 } from "node:child_process";
|
|
149641
149671
|
import { closeSync as closeSync5, existsSync as existsSync44, lstatSync as lstatSync17, readFileSync as readFileSync54, statSync as statSync15 } from "node:fs";
|
|
149642
149672
|
import { createServer as createServer3 } from "node:net";
|
|
149643
|
-
import { basename as basename14, dirname as dirname28, isAbsolute as isAbsolute4, join as join43, relative as relative9, resolve as resolve42, sep as
|
|
149673
|
+
import { basename as basename14, dirname as dirname28, isAbsolute as isAbsolute4, join as join43, relative as relative9, resolve as resolve42, sep as sep15 } from "node:path";
|
|
149644
149674
|
function homeShotPath(dir, home) {
|
|
149645
149675
|
const root = resolve42(dir);
|
|
149646
149676
|
const base = resolve42(root, ".himi", "shots");
|
|
149647
149677
|
const shot = resolve42(base, `${home}.png`);
|
|
149648
|
-
if (!shot.startsWith(base +
|
|
149649
|
-
for (let p2 = shot; p2 !== root && p2.startsWith(root +
|
|
149678
|
+
if (!shot.startsWith(base + sep15)) return null;
|
|
149679
|
+
for (let p2 = shot; p2 !== root && p2.startsWith(root + sep15); p2 = dirname28(p2)) {
|
|
149650
149680
|
try {
|
|
149651
149681
|
if (lstatSync17(p2).isSymbolicLink()) return null;
|
|
149652
149682
|
} catch {
|
|
@@ -154011,6 +154041,7 @@ __export(capabilities_exports, {
|
|
|
154011
154041
|
capabilityIssues: () => capabilityIssues,
|
|
154012
154042
|
capabilityRemedy: () => capabilityRemedy,
|
|
154013
154043
|
contentShell: () => contentShell,
|
|
154044
|
+
declareHintFor: () => declareHintFor,
|
|
154014
154045
|
envelopeSubsetIssues: () => envelopeSubsetIssues,
|
|
154015
154046
|
formatCapability: () => formatCapability,
|
|
154016
154047
|
formatCapabilityList: () => formatCapabilityList,
|
|
@@ -154027,6 +154058,9 @@ __export(capabilities_exports, {
|
|
|
154027
154058
|
});
|
|
154028
154059
|
import { existsSync as existsSync55, lstatSync as lstatSync18, readFileSync as readFileSync65 } from "node:fs";
|
|
154029
154060
|
import { join as join55 } from "node:path";
|
|
154061
|
+
function declareHintFor(id) {
|
|
154062
|
+
return catalogKey(id) === "app_services" ? "each calling screen's `logicBundle.declaredCapabilities` (the runtime gate) \u2014 an app need not list app_services in config.ts `capabilities`, which only a shell that hosts app services must (an HHP app declares it there, since HHP copies that list onto every screen)" : DECLARE_HINT;
|
|
154063
|
+
}
|
|
154030
154064
|
function isShell(name) {
|
|
154031
154065
|
return Object.hasOwn(SHELL_CAPABILITIES, name);
|
|
154032
154066
|
}
|
|
@@ -154074,7 +154108,7 @@ function capabilityInfo(rawId, sdkRef = []) {
|
|
|
154074
154108
|
ios: { info: ios.info, entitlements: ios.entitlements },
|
|
154075
154109
|
android: { permissions: android.permissions, features: android.features.map((f2) => f2.name) },
|
|
154076
154110
|
shells: Object.fromEntries(SHELLS.map((s2) => [s2, shellSupport(s2, id)])),
|
|
154077
|
-
declare:
|
|
154111
|
+
declare: declareHintFor(id),
|
|
154078
154112
|
description: summaryOf(pkgs, sdkRef),
|
|
154079
154113
|
implies: [...CAPABILITY_IMPLIES[id] ?? []],
|
|
154080
154114
|
modules,
|
|
@@ -154208,6 +154242,7 @@ function formatCapability(c2, shell) {
|
|
|
154208
154242
|
function formatCapabilityList(caps, shell) {
|
|
154209
154243
|
const lines = [
|
|
154210
154244
|
`${caps.length} capabilities. Declare one in ${DECLARE_HINT}.`,
|
|
154245
|
+
...caps.some((c2) => c2.id === "app_services") ? [`app_services: ${declareHintFor("app_services")}.`] : [],
|
|
154211
154246
|
"Run `himi capabilities <id>` for one; `--shell <name>` checks what that binary serves.",
|
|
154212
154247
|
"",
|
|
154213
154248
|
` ${"id".padEnd(24)} ${"import".padEnd(30)} ${"native".padEnd(7)} ${shell ? `in ${shell}` : "shells that serve it"}`
|
|
@@ -154301,7 +154336,7 @@ function capabilityIssues(usage, shell, strict, lastDist, componentModules) {
|
|
|
154301
154336
|
for (const s2 of usage.screens) {
|
|
154302
154337
|
for (const raw of s2.declared) {
|
|
154303
154338
|
const id = catalogKey(raw);
|
|
154304
|
-
if (!isKnownCapability(id) || appLevel.has(id)) continue;
|
|
154339
|
+
if (!isKnownCapability(id) || appLevel.has(id) || id === "app_services") continue;
|
|
154305
154340
|
byId.set(id, [...byId.get(id) ?? [], s2.screenId]);
|
|
154306
154341
|
}
|
|
154307
154342
|
}
|
|
@@ -155069,7 +155104,7 @@ __export(eject_exports, {
|
|
|
155069
155104
|
ejectModule: () => ejectModule
|
|
155070
155105
|
});
|
|
155071
155106
|
import { existsSync as existsSync58, mkdirSync as mkdirSync27, readFileSync as readFileSync68, writeFileSync as writeFileSync23 } from "node:fs";
|
|
155072
|
-
import { dirname as dirname33, join as join58, relative as relative10, resolve as resolve47, sep as
|
|
155107
|
+
import { dirname as dirname33, join as join58, relative as relative10, resolve as resolve47, sep as sep16 } from "node:path";
|
|
155073
155108
|
function locate(repoRootOrCwd, mod) {
|
|
155074
155109
|
const inRepo = resolve47(repoRootOrCwd, `stdlib/flows/${mod}/src/index.ts`);
|
|
155075
155110
|
if (existsSync58(inRepo)) return { path: inRepo, form: "source" };
|
|
@@ -155122,7 +155157,7 @@ function ejectModule(opts) {
|
|
|
155122
155157
|
if (!existsSync58(f2)) continue;
|
|
155123
155158
|
const before = readFileSync68(f2, "utf8");
|
|
155124
155159
|
let after = before;
|
|
155125
|
-
let rel = relative10(dirname33(f2), target).split(
|
|
155160
|
+
let rel = relative10(dirname33(f2), target).split(sep16).join("/").replace(/\.tsx?$/, ".js");
|
|
155126
155161
|
if (!rel.startsWith(".")) rel = `./${rel}`;
|
|
155127
155162
|
for (const spec of specifiersFor(mod)) {
|
|
155128
155163
|
const q2 = spec.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -155299,7 +155334,7 @@ __export(icon_exports, {
|
|
|
155299
155334
|
});
|
|
155300
155335
|
import { createHash as createHash31 } from "node:crypto";
|
|
155301
155336
|
import { existsSync as existsSync59, mkdirSync as mkdirSync28, readFileSync as readFileSync69, statSync as statSync18, writeFileSync as writeFileSync24 } from "node:fs";
|
|
155302
|
-
import { basename as basename16, dirname as dirname34, join as join59, resolve as resolve48, sep as
|
|
155337
|
+
import { basename as basename16, dirname as dirname34, join as join59, resolve as resolve48, sep as sep17 } from "node:path";
|
|
155303
155338
|
function readManifest(dir) {
|
|
155304
155339
|
try {
|
|
155305
155340
|
return JSON.parse(readFileSync69(join59(dir, MANIFEST), "utf8"));
|
|
@@ -155316,7 +155351,7 @@ function declaredIconName(dir) {
|
|
|
155316
155351
|
function iconDest(dir, name) {
|
|
155317
155352
|
const base = resolve48(dir);
|
|
155318
155353
|
const abs = resolve48(base, name);
|
|
155319
|
-
if (!abs.startsWith(base +
|
|
155354
|
+
if (!abs.startsWith(base + sep17)) {
|
|
155320
155355
|
throw new Error(
|
|
155321
155356
|
`himi icon: himalaya.content.json declares "icon": "${name}", which resolves outside the package (${abs}). Declare a path inside it, e.g. "${DEFAULT_CONTENT_ICON}".`
|
|
155322
155357
|
);
|
|
@@ -155663,8 +155698,8 @@ function baseOf(target, linkable, known) {
|
|
|
155663
155698
|
let best = null;
|
|
155664
155699
|
for (const base of linkable ?? []) {
|
|
155665
155700
|
if (!known.has(base) || target.length <= base.length + 1 || !target.startsWith(base)) continue;
|
|
155666
|
-
const
|
|
155667
|
-
if ((
|
|
155701
|
+
const sep22 = target[base.length];
|
|
155702
|
+
if ((sep22 === "_" || sep22 === "/") && (!best || base.length > best.length)) best = base;
|
|
155668
155703
|
}
|
|
155669
155704
|
return best;
|
|
155670
155705
|
}
|
|
@@ -159654,10 +159689,10 @@ var init_cli_bridge = __esm({
|
|
|
159654
159689
|
// src/mcp/file-tools.ts
|
|
159655
159690
|
import { closeSync as closeSync6, constants as constants4, lstatSync as lstatSync21, mkdirSync as mkdirSync33, openSync as openSync5, readdirSync as readdirSync31, readFileSync as readFileSync81, realpathSync as realpathSync10, renameSync as renameSync11, rmSync as rmSync18, statSync as statSync19, writeSync, existsSync as existsSync69 } from "node:fs";
|
|
159656
159691
|
import { randomBytes as randomBytes3 } from "node:crypto";
|
|
159657
|
-
import { dirname as dirname39, isAbsolute as isAbsolute7, join as join72, relative as relative13, resolve as resolve56, sep as
|
|
159692
|
+
import { dirname as dirname39, isAbsolute as isAbsolute7, join as join72, relative as relative13, resolve as resolve56, sep as sep18 } from "node:path";
|
|
159658
159693
|
import * as z2 from "zod";
|
|
159659
159694
|
function within(root, p2) {
|
|
159660
|
-
return p2 === root || p2.startsWith(root.endsWith(
|
|
159695
|
+
return p2 === root || p2.startsWith(root.endsWith(sep18) ? root : root + sep18);
|
|
159661
159696
|
}
|
|
159662
159697
|
function realish(p2) {
|
|
159663
159698
|
let cur = p2;
|
|
@@ -159665,14 +159700,14 @@ function realish(p2) {
|
|
|
159665
159700
|
while (!existsSync69(cur)) {
|
|
159666
159701
|
const up = dirname39(cur);
|
|
159667
159702
|
if (up === cur) break;
|
|
159668
|
-
tail.unshift(cur.slice(up.length + (up.endsWith(
|
|
159703
|
+
tail.unshift(cur.slice(up.length + (up.endsWith(sep18) ? 0 : 1)));
|
|
159669
159704
|
cur = up;
|
|
159670
159705
|
}
|
|
159671
159706
|
return join72(realpathSync10(cur), ...tail);
|
|
159672
159707
|
}
|
|
159673
159708
|
function symlinkComponent(base, abs) {
|
|
159674
159709
|
let cur = base;
|
|
159675
|
-
for (const part3 of relative13(base, abs).split(
|
|
159710
|
+
for (const part3 of relative13(base, abs).split(sep18).filter(Boolean)) {
|
|
159676
159711
|
cur = join72(cur, part3);
|
|
159677
159712
|
try {
|
|
159678
159713
|
if (lstatSync21(cur).isSymbolicLink()) return relative13(base, cur);
|
|
@@ -159711,7 +159746,7 @@ function onDiskSpelling(abs) {
|
|
|
159711
159746
|
while (!existsSync69(cur)) {
|
|
159712
159747
|
const up = dirname39(cur);
|
|
159713
159748
|
if (up === cur) break;
|
|
159714
|
-
tail.unshift(cur.slice(up.length + (up.endsWith(
|
|
159749
|
+
tail.unshift(cur.slice(up.length + (up.endsWith(sep18) ? 0 : 1)));
|
|
159715
159750
|
cur = up;
|
|
159716
159751
|
}
|
|
159717
159752
|
return join72(realpathSync10.native(cur), ...tail);
|
|
@@ -159771,7 +159806,7 @@ function listFiles(appDir3) {
|
|
|
159771
159806
|
const rel = relative13(appDir3, p2);
|
|
159772
159807
|
if (isDeniedSourcePath(rel) || isDeniedSourcePath(rel.toLowerCase())) continue;
|
|
159773
159808
|
if (files.length >= MAX_LISTED) return false;
|
|
159774
|
-
files.push({ path: rel.split(
|
|
159809
|
+
files.push({ path: rel.split(sep18).join("/"), bytes: statSync19(p2).size });
|
|
159775
159810
|
}
|
|
159776
159811
|
}
|
|
159777
159812
|
return true;
|
|
@@ -160571,7 +160606,7 @@ __export(native_decode_exports, {
|
|
|
160571
160606
|
runAndroidNativeDecode: () => runAndroidNativeDecode,
|
|
160572
160607
|
runNativeDecode: () => runNativeDecode
|
|
160573
160608
|
});
|
|
160574
|
-
import { execFileSync as execFileSync6, spawnSync as
|
|
160609
|
+
import { execFileSync as execFileSync6, spawnSync as spawnSync4 } from "node:child_process";
|
|
160575
160610
|
import { existsSync as existsSync73, mkdirSync as mkdirSync37, mkdtempSync as mkdtempSync5, readFileSync as readFileSync84, rmSync as rmSync20, writeFileSync as writeFileSync31 } from "node:fs";
|
|
160576
160611
|
import { homedir as homedir10, tmpdir as tmpdir6 } from "node:os";
|
|
160577
160612
|
import { join as join78 } from "node:path";
|
|
@@ -160591,7 +160626,7 @@ function nativeOracleShipped() {
|
|
|
160591
160626
|
function detectNativeDecode(options = {}) {
|
|
160592
160627
|
const hostPlatform = options.hostPlatform ?? process.platform;
|
|
160593
160628
|
const packageDir = options.packageDir ?? nativeDecodePackageDir();
|
|
160594
|
-
const swiftAvailable = options.swiftAvailable ??
|
|
160629
|
+
const swiftAvailable = options.swiftAvailable ?? spawnSync4("swift", ["--version"], { stdio: "ignore" }).status === 0;
|
|
160595
160630
|
if (hostPlatform !== "darwin") {
|
|
160596
160631
|
return { platform: "ios", available: false, reason: `the iOS decoder oracle requires macOS (darwin); this host is ${hostPlatform}` };
|
|
160597
160632
|
}
|
|
@@ -160893,7 +160928,7 @@ __export(browser_authoring_exports, {
|
|
|
160893
160928
|
import { createServer as createServer4 } from "node:http";
|
|
160894
160929
|
import { createHash as createHash38, randomBytes as randomBytes4 } from "node:crypto";
|
|
160895
160930
|
import { existsSync as existsSync74, readdirSync as readdirSync33, readFileSync as readFileSync85, realpathSync as realpathSync11, statSync as statSync20 } from "node:fs";
|
|
160896
|
-
import { join as join79, posix as posix3, relative as relative15, sep as
|
|
160931
|
+
import { join as join79, posix as posix3, relative as relative15, sep as sep19 } from "node:path";
|
|
160897
160932
|
function humanMs(ms2) {
|
|
160898
160933
|
return ms2 < 1e3 ? `${ms2}ms` : `${Math.round(ms2 / 1e3)}s`;
|
|
160899
160934
|
}
|
|
@@ -160943,7 +160978,7 @@ function collectRelativeSiblings(files, tier5SrcDir) {
|
|
|
160943
160978
|
];
|
|
160944
160979
|
for (const abs of candidates) {
|
|
160945
160980
|
if (!existsSync74(abs) || statSync20(abs).isDirectory()) continue;
|
|
160946
|
-
const key3 = `/tier5-src/${relative15(tier5SrcDir, abs).split(
|
|
160981
|
+
const key3 = `/tier5-src/${relative15(tier5SrcDir, abs).split(sep19).join(posix3.sep)}`;
|
|
160947
160982
|
if (key3 in files) break;
|
|
160948
160983
|
files[key3] = readFileSync85(abs, "utf8");
|
|
160949
160984
|
queue.push(key3);
|
|
@@ -164280,6 +164315,11 @@ ${releaseId}`;
|
|
|
164280
164315
|
...m2.templateMeta.accent ? { accent: m2.templateMeta.accent } : {},
|
|
164281
164316
|
...m2.templateMeta.palette?.length ? { palette: m2.templateMeta.palette } : {},
|
|
164282
164317
|
releaseId: m2.releaseId,
|
|
164318
|
+
// The content address of the catalog view (`/v1/template-source`), which serve-control
|
|
164319
|
+
// stamps as sha256(JSON.stringify(source)). Public so tools/ci/check-published-templates.mjs
|
|
164320
|
+
// can tell a stale template from a current one without the source or a credential:
|
|
164321
|
+
// `himi template publish --source-hash` computes the same hash from a checkout.
|
|
164322
|
+
...m2.sourceHash ? { sourceHash: m2.sourceHash } : {},
|
|
164283
164323
|
minBinaryVersion: m2.minBinaryVersion,
|
|
164284
164324
|
...iconUrl ? { iconUrl } : {}
|
|
164285
164325
|
});
|
|
@@ -165387,7 +165427,7 @@ __export(run_browser_exports, {
|
|
|
165387
165427
|
});
|
|
165388
165428
|
import { createServer as createServer6 } from "node:http";
|
|
165389
165429
|
import { existsSync as existsSync84, readFileSync as readFileSync94 } from "node:fs";
|
|
165390
|
-
import { spawnSync as
|
|
165430
|
+
import { spawnSync as spawnSync5 } from "node:child_process";
|
|
165391
165431
|
import { dirname as dirname44, resolve as resolve68 } from "node:path";
|
|
165392
165432
|
import { fileURLToPath as fileURLToPath30 } from "node:url";
|
|
165393
165433
|
function stagedDir() {
|
|
@@ -165398,7 +165438,7 @@ function missingStaged() {
|
|
|
165398
165438
|
}
|
|
165399
165439
|
function ensureBrowserPlaneStaged() {
|
|
165400
165440
|
if (missingStaged().length === 0) return { ok: true, detail: "already staged" };
|
|
165401
|
-
const r3 =
|
|
165441
|
+
const r3 = spawnSync5(process.execPath, [resolve68(REPO2, "core/serve/scripts/stage-browser-plane.mjs")], {
|
|
165402
165442
|
cwd: REPO2,
|
|
165403
165443
|
encoding: "utf8"
|
|
165404
165444
|
});
|
|
@@ -177494,7 +177534,7 @@ var init_analyze = __esm({
|
|
|
177494
177534
|
|
|
177495
177535
|
// src/base44-analyze/write-artifacts.ts
|
|
177496
177536
|
import { existsSync as existsSync101, mkdirSync as mkdirSync45, readFileSync as readFileSync119, rmSync as rmSync29, writeFileSync as writeFileSync44 } from "node:fs";
|
|
177497
|
-
import { dirname as dirname52, join as join111, resolve as resolve74, sep as
|
|
177537
|
+
import { dirname as dirname52, join as join111, resolve as resolve74, sep as sep20 } from "node:path";
|
|
177498
177538
|
function isBookFolder(dir) {
|
|
177499
177539
|
try {
|
|
177500
177540
|
return JSON.parse(readFileSync119(join111(dir, "book.json"), "utf8")).kind === "base44-app-book";
|
|
@@ -177602,7 +177642,7 @@ function writeBase44Book(result, outDir, opts = {}) {
|
|
|
177602
177642
|
for (const f2 of result.sourceFiles) {
|
|
177603
177643
|
if (!safeRel(f2.path)) continue;
|
|
177604
177644
|
const dest = join111(sourceRoot, ...f2.path.split("/"));
|
|
177605
|
-
if (!dest.startsWith(sourceRoot +
|
|
177645
|
+
if (!dest.startsWith(sourceRoot + sep20)) continue;
|
|
177606
177646
|
mkdirSync45(dirname52(dest), { recursive: true });
|
|
177607
177647
|
writeFileSync44(dest, f2.bytes);
|
|
177608
177648
|
}
|
|
@@ -184117,8 +184157,8 @@ var init_customer_build = __esm({
|
|
|
184117
184157
|
|
|
184118
184158
|
// src/site-analyze/apply.ts
|
|
184119
184159
|
import { existsSync as existsSync103, readFileSync as readFileSync121, writeFileSync as writeFileSync47, copyFileSync as copyFileSync2, mkdirSync as mkdirSync48, realpathSync as realpathSync15, statSync as statSync27 } from "node:fs";
|
|
184120
|
-
import { dirname as dirname54, isAbsolute as isAbsolute9, join as join115, resolve as resolve78, sep as
|
|
184121
|
-
import { spawnSync as
|
|
184160
|
+
import { dirname as dirname54, isAbsolute as isAbsolute9, join as join115, resolve as resolve78, sep as sep21 } from "node:path";
|
|
184161
|
+
import { spawnSync as spawnSync6 } from "node:child_process";
|
|
184122
184162
|
function unpairedRedirectNote(overlay) {
|
|
184123
184163
|
if (!overlay.wix?.clientId || overlay.wix.redirectUri) return void 0;
|
|
184124
184164
|
return `no OAuth redirect paired with client ${overlay.wix.clientId} \u2014 the app (and prepare:customer) will refuse to start until one is set. Register it with \`himi site client ensure --site ${overlay.siteId?.trim() || "<msid>"} --redirect-uri <uri> --yes\`, then re-run analyze with \`--redirect-uri <uri>\` (or export HIMI_BRANDED_LITE_WIX_REDIRECT_URI)`;
|
|
@@ -184247,7 +184287,7 @@ function buildMergedContract(options) {
|
|
|
184247
184287
|
const contained = (root, rel) => {
|
|
184248
184288
|
if (isAbsolute9(rel)) return void 0;
|
|
184249
184289
|
const full = resolve78(root, rel);
|
|
184250
|
-
return full.startsWith(resolve78(root) +
|
|
184290
|
+
return full.startsWith(resolve78(root) + sep21) ? full : void 0;
|
|
184251
184291
|
};
|
|
184252
184292
|
const stage = (fromRel, toRel) => {
|
|
184253
184293
|
const from = contained(packageDir, fromRel);
|
|
@@ -184261,7 +184301,7 @@ function buildMergedContract(options) {
|
|
|
184261
184301
|
} catch {
|
|
184262
184302
|
return void 0;
|
|
184263
184303
|
}
|
|
184264
|
-
if (!real.startsWith(realRoot +
|
|
184304
|
+
if (!real.startsWith(realRoot + sep21)) return void 0;
|
|
184265
184305
|
try {
|
|
184266
184306
|
if (!statSync27(real).isFile()) return void 0;
|
|
184267
184307
|
mkdirSync48(dirname54(to2), { recursive: true });
|
|
@@ -184397,7 +184437,7 @@ async function applyOverlays(input) {
|
|
|
184397
184437
|
const packageDir = dirname54(resolve78(input.overlayPath));
|
|
184398
184438
|
const { path: contract, staged } = buildMergedContract({ appDir: appDir3, packageDir, overlay });
|
|
184399
184439
|
wrote.push(...staged);
|
|
184400
|
-
const r3 =
|
|
184440
|
+
const r3 = spawnSync6("npm", ["run", "prepare:customer", "--", "--contract", contract], {
|
|
184401
184441
|
cwd: appDir3,
|
|
184402
184442
|
encoding: "utf8"
|
|
184403
184443
|
});
|
|
@@ -187471,7 +187511,8 @@ var BOOLEAN_FLAGS = /* @__PURE__ */ new Set([
|
|
|
187471
187511
|
"refresh-wix",
|
|
187472
187512
|
"empty-app-ok",
|
|
187473
187513
|
"aab",
|
|
187474
|
-
"managed"
|
|
187514
|
+
"managed",
|
|
187515
|
+
"source-hash"
|
|
187475
187516
|
]);
|
|
187476
187517
|
var SWITCH_FLAGS = new Set([...BOOLEAN_FLAGS].filter((name) => name !== "deep"));
|
|
187477
187518
|
var SWITCH_CONSEQUENCE = {
|
|
@@ -187481,6 +187522,7 @@ var SWITCH_CONSEQUENCE = {
|
|
|
187481
187522
|
record: "silently ignored, it would leave you believing the fixture was refreshed",
|
|
187482
187523
|
"no-oauth-app": "silently ignored, it would mint an OAuth client you asked to skip",
|
|
187483
187524
|
"dry-run": "silently ignored, it would perform the real writes you asked to rehearse",
|
|
187525
|
+
"source-hash": "silently ignored, it would PUBLISH the template instead of printing its source hash",
|
|
187484
187526
|
"allow-destructive": "silently ignored, it would refuse the destructive step you opted into",
|
|
187485
187527
|
static: "silently ignored, it would render HYDRATED when you asked for static",
|
|
187486
187528
|
// `--wait=false` is the one spelling where "pass it bare" is the WRONG advice: bare `--wait`
|
|
@@ -188244,7 +188286,7 @@ var USAGE = `himi \u2014 the Himalaya authoring CLI (remote dev loop)
|
|
|
188244
188286
|
else skips it: outside CI it starts, and watch.note says why
|
|
188245
188287
|
himi template list [--remote] list starter templates + metadata (title/description/tags) + each one's start prompt
|
|
188246
188288
|
himi template prompt <name> print the prompt that starts an app from that template
|
|
188247
|
-
himi template publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--visibility public|unlisted]
|
|
188289
|
+
himi template publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--visibility public|unlisted] [--source-hash]
|
|
188248
188290
|
publish an app AS a himi init --template on the serve plane
|
|
188249
188291
|
himi template trim --keep <id,id,\u2026> | --from-spec [SPEC.md] [--content <dir>] [--links follow|drop] [--dry-run] [--force]
|
|
188250
188292
|
cut a scaffolded template to the screens you keep (the home and
|
|
@@ -188992,7 +189034,7 @@ var COMMANDS = [
|
|
|
188992
189034
|
{ name: "hhp", summary: "author responsive HTML/CSS/TypeScript screens compiled to native SDUI and T5 workers; scaffold, inspect the app profile, lint or compile declared sources", required: "init <screen> | profile | lint | compile [--app <name>|--content <dir>] [--json] [--dry-run]" },
|
|
188993
189035
|
{ name: "captcha", summary: "create and store native CAPTCHA keys in Serve, or inspect setup status; customer setup verifies Wix site ownership; does not enable member CAPTCHA SDKs", required: "setup|status --app <app> [--content <dir>] [--site <msid>] [--ios-bundle-id <id>] [--android-package-name <id>] [--target <t>]" },
|
|
188994
189036
|
{ name: "init", summary: "scaffold a starter content package (OTA-only; no native shells). --template <t> starts from a full reference app (branded-lite = consumer storefront over a Wix site; owner-lite = owner CRUD/management) instead of the minimal counter; --templates lists bundled ones; --remote fetches the template off the serve plane (falls back to the bundled copy offline). The new app also gets its agent files (the same set `himi agent-init` writes: AGENTS.md, CLAUDE.md, the himalaya skill, HIMALAYA.md, a SessionStart hook) so the next session started inside it picks the work up; --no-agent skips them. It also makes the build board (.himi/studio/, exactly as `himi studio --no-open` does \u2014 it never opens a browser), so every later render, test, validate, push and progress entry refreshes it; and, for a template bundled with this CLI, it makes the FIRST PICTURE itself (never for a --remote one: that is its publisher's code, and a render runs it on this machine, so next[] leaves the render to the agent after it has read the code): exactly `himi render <homeScreenId> --png --mocks --device iphone` (offline \u2014 no request; never --live; --mocks loads the app's recorded data when it has any), run as a child it kills after a time budget, writing .himi/shots/<home>.png and journaling it (by: himi) as the STARTING POINT (\"Starting point: the <template> template, before any of your changes\") so the board and the journal hold a picture when init returns. init also records the source it wrote (.himi/init-source.json: a content fingerprint, Markdown left out), and the first home PNG render after the source diverges from it is journaled once as \"First look at your app\" \u2014 reported as `firstLook: {image}` or `{skipped: <reason>}`, never a failed init; `--no-first-look` skips it (for scripts and CI that render themselves). For a bundled template (never a --remote one \u2014 the preview would build and serve its publisher's code) init also STARTS the live preview itself: `himi run --watch --content <dir> --port <p> --no-open --idle-exit 30`, detached in its own process group with its output in .himi/watch.log, never waited for (the url is chosen before it builds), recorded in .himi/watch.json, and reported as `watch: {started, pid, url, board, log}` \u2014 or `{skipped: <reason>}` for a `CI` environment, a test runner, a watch already running, or a start that failed (never a failed init). Nothing else skips it: outside CI it is started, and `watch.note` says an opt-out was ignored. The envelope LEADS with `doNow`: three lines to run now (the consent preflight, the live preview \u2014 its url and board when init started it, else `himi run --watch --content <dir> &` with the board's path \u2014 and the postcard line), and ENDS with the same lines as `doNowAgain`, so an agent that reads only the head or only the tail (`| tail`) gets them; at a terminal they are also printed as plain text on stderr, before the JSON and again after it. Its `next[]` LEADS with the steps for THIS session, in this order for every app \u2014 the offline first render and that picture's `himi progress` postcard (only when init could not make the picture), the skill's consent preflight (authorize or mock any Wix or external startup request; with none, go straight on), and only then the live preview (the running one's url, or `himi run --watch &` when init did not start it) \u2014 ahead of the next-session guidance", required: "<name> [--dir] [--template <t>] [--remote] [--base44-app-id <id>] [--base44-app-url <https://tenant>] [--no-agent] [--no-first-look] | --templates" },
|
|
188995
|
-
{ name: "template", summary: "starter-template catalog + publishing. Every template is a SHOWCASE APP \u2014 a real published release you can open running before you start from it. `list` prints available templates with metadata (title/description/tags) plus each one's start prompt \u2014 pass --remote to include the serve-plane catalog so an agent can pick one; `prompt <name>` prints just that sentence for one template (the skill URL is the public door, or the plane named by --target/--serve-url); `publish` publishes an app AS a `himi init --template` (needs a himalaya.template.json; builds a previewable release + attaches the scaffold source; --source-dir overrides which tree becomes the source, --name sets the template name; bakes a launcher icon \u2014 --icon <png>, or the committed template-icons/<name>.png \u2014 and extracts accent/palette gallery meta from the scaffold's tokens.json; --visibility unlisted keeps it out of the /v1/templates catalog \u2014 templates default to public); `trim --keep <ids>` cuts an app scaffolded from a template down to those screens (the home, and any screen the navigation pins such as a drawer body, always stays) \u2014 it deletes the other SCREENS/TEMPLATED entries whole, prunes navigation (linkableScreens, tabBar, drawer, deep links, surfaces) and drops tier5-src workers no kept screen uses, then runs validate --strict and rolls everything back if it fails (--force keeps it, --dry-run writes nothing). A kept screen that links to a removed one is refused unless --links follow (keep those too) or --links drop (remove the taps). Adopting one: `inspect` writes the adoption inventory (.himi/adopt.json: screens, workers, which screens can call Wix/network on appear \u2014 bootsOffline \u2014 placeholder and sample copy, proposed Data access rows, typed-journey stubs); `screens` lists, shows, rewrites or adds ONE dev/index.ts entry; `sweep` replaces sample identity/copy inside string literals; `recommend` ranks the catalog for a business description or a site's verticals; `trim --from-spec` takes the kept screens from SPEC.md's Screen catalogue", required: "list [--remote] | prompt <name> | publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--visibility public|unlisted] [--target <t>] | trim --keep <id,id,\u2026>|--from-spec [SPEC.md] [--content <dir>] [--links follow|drop] [--dry-run] [--force] | inspect [--content <dir>] [--dry-run] | screens [--show <id>] [--write <id> --from <file>] [--add <id> --from <file>] | sweep --set 'Old=>New' | --map <file> [--dry-run] | recommend [--text <t>] [--verticals a,b] [--book <dir>] [--remote]" },
|
|
189037
|
+
{ name: "template", summary: "starter-template catalog + publishing. Every template is a SHOWCASE APP \u2014 a real published release you can open running before you start from it. `list` prints available templates with metadata (title/description/tags) plus each one's start prompt \u2014 pass --remote to include the serve-plane catalog so an agent can pick one; `prompt <name>` prints just that sentence for one template (the skill URL is the public door, or the plane named by --target/--serve-url); `publish` publishes an app AS a `himi init --template` (needs a himalaya.template.json; builds a previewable release + attaches the scaffold source; --source-dir overrides which tree becomes the source, --name sets the template name; bakes a launcher icon \u2014 --icon <png>, or the committed template-icons/<name>.png \u2014 and extracts accent/palette gallery meta from the scaffold's tokens.json; --visibility unlisted keeps it out of the /v1/templates catalog \u2014 templates default to public; --source-hash prints the sourceHash and iconHash a publish would be stored under, with no build or network, and exits); `trim --keep <ids>` cuts an app scaffolded from a template down to those screens (the home, and any screen the navigation pins such as a drawer body, always stays) \u2014 it deletes the other SCREENS/TEMPLATED entries whole, prunes navigation (linkableScreens, tabBar, drawer, deep links, surfaces) and drops tier5-src workers no kept screen uses, then runs validate --strict and rolls everything back if it fails (--force keeps it, --dry-run writes nothing). A kept screen that links to a removed one is refused unless --links follow (keep those too) or --links drop (remove the taps). Adopting one: `inspect` writes the adoption inventory (.himi/adopt.json: screens, workers, which screens can call Wix/network on appear \u2014 bootsOffline \u2014 placeholder and sample copy, proposed Data access rows, typed-journey stubs); `screens` lists, shows, rewrites or adds ONE dev/index.ts entry; `sweep` replaces sample identity/copy inside string literals; `recommend` ranks the catalog for a business description or a site's verticals; `trim --from-spec` takes the kept screens from SPEC.md's Screen catalogue", required: "list [--remote] | prompt <name> | publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--visibility public|unlisted] [--target <t>] [--source-hash] | trim --keep <id,id,\u2026>|--from-spec [SPEC.md] [--content <dir>] [--links follow|drop] [--dry-run] [--force] | inspect [--content <dir>] [--dry-run] | screens [--show <id>] [--write <id> --from <file>] [--add <id> --from <file>] | sweep --set 'Old=>New' | --map <file> [--dry-run] | recommend [--text <t>] [--verticals a,b] [--book <dir>] [--remote]" },
|
|
188996
189038
|
{ name: "build", summary: "compile tier5-src/<name>/index.ts -> dist/bundles/<name>.bundle.js with esbuild (--binary = resolve published @himalaya/*); semantic TypeScript checking belongs to himi validate", required: "[--content <dir>] [--binary]" },
|
|
188997
189039
|
{ name: "functions", summary: "inspect/invoke server functions and operate durable jobs or schedules", required: "list|describe|openapi|invoke | jobs list|get|cancel|retry|dlq | schedule describe|invoke [--app <a>] [--environment preview|production] [--release <id>]" },
|
|
188998
189040
|
{ name: "eject", summary: "take ownership of a shared flow module (auth|checkout|screens): copies its source into tier5-src/_ejected/ and repoints this package's imports at the copy. The ladder's escape hatch \u2014 for when the factory options cannot express what you need. AFTER EJECTING, CENTRAL FIXES NO LONGER REACH THIS APP, including future corrections to the fail-closed entitlement and confirm-the-session rules. The floor is unaffected: credentials still go only through the native auth actions and money only through the cashier rail.", required: "<auth|checkout|screens> [--content <dir>]" },
|
|
@@ -189072,7 +189114,7 @@ function helpJson() {
|
|
|
189072
189114
|
|
|
189073
189115
|
// src/self-update.ts
|
|
189074
189116
|
import { readFileSync as readFileSync39, mkdirSync as mkdirSync18, writeFileSync as writeFileSync12, existsSync as existsSync35, rmSync as rmSync10, statSync as statSync8, accessSync, constants } from "node:fs";
|
|
189075
|
-
import { execFile, execFileSync as execFileSync3, spawnSync } from "node:child_process";
|
|
189117
|
+
import { execFile, execFileSync as execFileSync3, spawnSync as spawnSync2 } from "node:child_process";
|
|
189076
189118
|
import { randomUUID as randomUUID5 } from "node:crypto";
|
|
189077
189119
|
import { homedir as homedir8, hostname } from "node:os";
|
|
189078
189120
|
import { join as join31, resolve as resolve33, dirname as dirname23 } from "node:path";
|
|
@@ -189317,7 +189359,7 @@ function npmInstallArgs(registry2, version5) {
|
|
|
189317
189359
|
return ["i", "-g", `${CLI_PACKAGE}@${version5}`, `--registry=${pinned}`, `--@wix:registry=${pinned}`];
|
|
189318
189360
|
}
|
|
189319
189361
|
var INSTALLABLE_SPEC = /^(?:latest|\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/;
|
|
189320
|
-
function createUpdateRunner(spawn8 =
|
|
189362
|
+
function createUpdateRunner(spawn8 = spawnSync2) {
|
|
189321
189363
|
return {
|
|
189322
189364
|
install: async (registry2, version5) => {
|
|
189323
189365
|
if (!isTrustedRegistry(registry2)) return { ok: false, detail: `refusing untrusted registry ${registry2}` };
|
|
@@ -189341,7 +189383,7 @@ function createUpdateRunner(spawn8 = spawnSync) {
|
|
|
189341
189383
|
const root = globalNodeModulesRoot();
|
|
189342
189384
|
const entry = root ? join31(root, "@wix", "himalaya-cli", "dist", "cli.mjs") : void 0;
|
|
189343
189385
|
if (!entry || !existsSync35(entry)) return void 0;
|
|
189344
|
-
const result =
|
|
189386
|
+
const result = spawnSync2(process.execPath, [entry, ...argv], {
|
|
189345
189387
|
// inherit keeps PIPED STDIN working — commands that read stdin must survive a re-exec.
|
|
189346
189388
|
stdio: "inherit",
|
|
189347
189389
|
env: { ...process.env, [UPDATE_REEXEC_ENV]: "1" }
|
|
@@ -190345,6 +190387,7 @@ async function templateCommand(ctx) {
|
|
|
190345
190387
|
}
|
|
190346
190388
|
const appDir3 = resolve46(str3(flags.dir) ?? process.cwd());
|
|
190347
190389
|
const sourceDir = resolve46(str3(flags["source-dir"]) ?? appDir3);
|
|
190390
|
+
ensureTemplatesFor(appDir3, sourceDir);
|
|
190348
190391
|
let meta;
|
|
190349
190392
|
try {
|
|
190350
190393
|
meta = JSON.parse(readFileSync67(join57(sourceDir, TEMPLATE_META_FILE), "utf8"));
|
|
@@ -190375,6 +190418,28 @@ async function templateCommand(ctx) {
|
|
|
190375
190418
|
const buildDir = materializeForPreview(appDir3, name, meta.title);
|
|
190376
190419
|
if (buildDir !== appDir3) publishScratch.push(buildDir);
|
|
190377
190420
|
const app = await appId(buildDir);
|
|
190421
|
+
const catalogView = () => ({ files: canonicalCatalogFiles(sentinelizeArchive(readTemplateFiles(sourceDir), app)), meta });
|
|
190422
|
+
const launcherIcon = () => {
|
|
190423
|
+
const iconPath = str3(flags.icon) ? resolve46(str3(flags.icon)) : templateIconPath(name);
|
|
190424
|
+
if (!iconPath) return void 0;
|
|
190425
|
+
try {
|
|
190426
|
+
const bytes2 = readFileSync67(iconPath);
|
|
190427
|
+
return { bytes: bytes2, hash: createHash30("sha256").update(bytes2).digest("hex") };
|
|
190428
|
+
} catch {
|
|
190429
|
+
return void 0;
|
|
190430
|
+
}
|
|
190431
|
+
};
|
|
190432
|
+
if (flags["source-hash"] === true) {
|
|
190433
|
+
print({
|
|
190434
|
+
ok: true,
|
|
190435
|
+
template: name,
|
|
190436
|
+
app: templateAppId,
|
|
190437
|
+
published: false,
|
|
190438
|
+
sourceHash: createHash30("sha256").update(JSON.stringify(catalogView())).digest("hex"),
|
|
190439
|
+
iconHash: launcherIcon()?.hash ?? null
|
|
190440
|
+
});
|
|
190441
|
+
return 0;
|
|
190442
|
+
}
|
|
190378
190443
|
const strict = flags.strict === true;
|
|
190379
190444
|
const force = flags.force === true;
|
|
190380
190445
|
const { buildContentForValidation: buildContentForValidation2, buildReleaseFromContent: buildReleaseFromContent2, bundleOutDir: bundleOutDir2 } = await loadAuthoring();
|
|
@@ -190437,25 +190502,18 @@ async function templateCommand(ctx) {
|
|
|
190437
190502
|
}));
|
|
190438
190503
|
return 1;
|
|
190439
190504
|
}
|
|
190440
|
-
const
|
|
190441
|
-
|
|
190442
|
-
if (
|
|
190443
|
-
try {
|
|
190444
|
-
const bytes2 = readFileSync67(iconPath);
|
|
190445
|
-
payload.icon = bytes2.toString("base64");
|
|
190446
|
-
iconHash = createHash30("sha256").update(bytes2).digest("hex");
|
|
190447
|
-
} catch {
|
|
190448
|
-
}
|
|
190449
|
-
}
|
|
190505
|
+
const icon = launcherIcon();
|
|
190506
|
+
const iconHash = icon?.hash;
|
|
190507
|
+
if (icon) payload.icon = icon.bytes.toString("base64");
|
|
190450
190508
|
payload.app = templateAppId;
|
|
190451
190509
|
const { rebindReleaseId: rebindReleaseId2 } = await Promise.resolve().then(() => (init_build3(), build_exports2));
|
|
190452
190510
|
payload.manifest = rebindReleaseId2({ ...payload.manifest, app: templateAppId, ...iconHash ? { iconHash } : {} });
|
|
190453
|
-
const
|
|
190454
|
-
if (Object.keys(files).length === 0) {
|
|
190511
|
+
const source = catalogView();
|
|
190512
|
+
if (Object.keys(source.files).length === 0) {
|
|
190455
190513
|
io2.error(JSON.stringify({ error: `no source files collected from ${sourceDir}` }));
|
|
190456
190514
|
return 1;
|
|
190457
190515
|
}
|
|
190458
|
-
payload.source =
|
|
190516
|
+
payload.source = source;
|
|
190459
190517
|
const { collectAppSource: collectAppSource2, secretFindings: secretFindings2, zipAppSource: zipAppSource2, largestEntries: largestEntries2, MAX_APP_SOURCE_BYTES: MAX_APP_SOURCE_BYTES2 } = await Promise.resolve().then(() => (init_app_source(), app_source_exports));
|
|
190460
190518
|
const templateArchive = collectAppSource2(sourceDir);
|
|
190461
190519
|
const templateSecrets = secretFindings2(templateArchive.entries);
|
|
@@ -190611,7 +190669,7 @@ async function templateCommand(ctx) {
|
|
|
190611
190669
|
icon: Boolean(iconHash),
|
|
190612
190670
|
...meta.accent ? { accent: meta.accent } : {},
|
|
190613
190671
|
...meta.palette ? { palette: meta.palette } : {},
|
|
190614
|
-
sourceFiles: Object.keys(files).length,
|
|
190672
|
+
sourceFiles: Object.keys(source.files).length,
|
|
190615
190673
|
...hasErrors && force ? { forcedPastErrors: true } : {},
|
|
190616
190674
|
initWith: `himi init <new-app-name> --template ${name} --remote${targetFlag}`
|
|
190617
190675
|
});
|
|
@@ -190626,7 +190684,7 @@ async function templateCommand(ctx) {
|
|
|
190626
190684
|
}
|
|
190627
190685
|
}
|
|
190628
190686
|
}
|
|
190629
|
-
io2.error(JSON.stringify({ error: "template needs a subcommand", usage: "himi template list [--remote] | himi template prompt <name> | himi template publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--target <t>] | himi template trim --keep <id,id,\u2026>|--from-spec [SPEC.md] [--content <dir>] [--links follow|drop] [--dry-run] [--force] | himi template inspect | himi template screens [--show <id>] [--write <id> --from <file>] | himi template sweep --set 'Old=>New' | himi template recommend --text <description>" }));
|
|
190687
|
+
io2.error(JSON.stringify({ error: "template needs a subcommand", usage: "himi template list [--remote] | himi template prompt <name> | himi template publish [--dir <app>] [--source-dir <dir>] [--name <n>] [--icon <png>] [--target <t>] [--source-hash] | himi template trim --keep <id,id,\u2026>|--from-spec [SPEC.md] [--content <dir>] [--links follow|drop] [--dry-run] [--force] | himi template inspect | himi template screens [--show <id>] [--write <id> --from <file>] | himi template sweep --set 'Old=>New' | himi template recommend --text <description>" }));
|
|
190630
190688
|
return 2;
|
|
190631
190689
|
}
|
|
190632
190690
|
|
|
@@ -190844,7 +190902,7 @@ async function validateCommand(ctx) {
|
|
|
190844
190902
|
import { readFileSync as readFileSync80 } from "node:fs";
|
|
190845
190903
|
|
|
190846
190904
|
// src/dpx.ts
|
|
190847
|
-
import { spawnSync as
|
|
190905
|
+
import { spawnSync as spawnSync3 } from "node:child_process";
|
|
190848
190906
|
import { existsSync as existsSync67, readFileSync as readFileSync78 } from "node:fs";
|
|
190849
190907
|
import { homedir as homedir9 } from "node:os";
|
|
190850
190908
|
import { join as join70 } from "node:path";
|
|
@@ -190889,7 +190947,7 @@ function parseDpxAuthStatusIdentity(stdout) {
|
|
|
190889
190947
|
return stdout.split("\n").map((l2) => l2.trim()).find(Boolean) || void 0;
|
|
190890
190948
|
}
|
|
190891
190949
|
var defaultRunner2 = (cmd, args) => {
|
|
190892
|
-
const r3 =
|
|
190950
|
+
const r3 = spawnSync3(cmd, args, { encoding: "utf8" });
|
|
190893
190951
|
return { status: r3.status, stdout: r3.stdout ?? "", stderr: r3.stderr ?? "", error: r3.error };
|
|
190894
190952
|
};
|
|
190895
190953
|
function dpxAuthStatus(opts = {}) {
|