From 7b6b2a1cbfd312b779dca512c2038d6b28926773 Mon Sep 17 00:00:00 2001 From: Gerben Aaltink Date: Fri, 22 Nov 2024 13:40:39 +0100 Subject: [PATCH] Initial commit --- .clang-format | 192 +++++++++++++++++ .gitignore | 6 + Makefile | 9 + README.md | 0 cli.h | 184 ++++++++++++++++ main.c | 39 ++++ sorm | Bin 0 -> 216384 bytes sorm.h | 576 ++++++++++++++++++++++++++++++++++++++++++++++++++ sorm.py | 162 ++++++++++++++ sorm.so | Bin 0 -> 256088 bytes str.h | 50 +++++ 11 files changed, 1218 insertions(+) create mode 100644 .clang-format create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 cli.h create mode 100644 main.c create mode 100755 sorm create mode 100644 sorm.h create mode 100644 sorm.py create mode 100755 sorm.so create mode 100644 str.h diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..de7da58 --- /dev/null +++ b/.clang-format @@ -0,0 +1,192 @@ +--- +Language: Cpp +# BasedOnStyle: LLVM +AccessModifierOffset: -2 +AlignAfterOpenBracket: Align +AlignArrayOfStructures: None +AlignConsecutiveMacros: None +AlignConsecutiveAssignments: None +AlignConsecutiveBitFields: None +AlignConsecutiveDeclarations: None +AlignEscapedNewlines: Right +AlignOperands: Align +AlignTrailingComments: true +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowShortEnumsOnASingleLine: true +AllowShortBlocksOnASingleLine: Never +AllowShortCaseLabelsOnASingleLine: false +AllowShortFunctionsOnASingleLine: All +AllowShortLambdasOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterFunction: false + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + AfterExternBlock: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBinaryOperators: None +BreakBeforeConceptDeclarations: true +BreakBeforeBraces: Attach +BreakBeforeInheritanceComma: false +BreakInheritanceList: BeforeColon +BreakBeforeTernaryOperators: true +BreakConstructorInitializersBeforeComma: false +BreakConstructorInitializers: BeforeColon +BreakAfterJavaFieldAnnotations: false +BreakStringLiterals: true +ColumnLimit: 140 +CommentPragmas: '^ IWYU pragma:' +QualifierAlignment: Leave +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: true +DeriveLineEnding: true +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +PackConstructorInitializers: BinPack +BasedOnStyle: '' +ConstructorInitializerAllOnOneLineOrOnePerLine: false +AllowAllConstructorInitializersOnNextLine: true +FixNamespaceComments: true +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseLabels: false +IndentCaseBlocks: false +IndentGotoLabels: true +IndentPPDirectives: None +IndentExternBlock: AfterExternBlock +IndentRequires: false +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertTrailingCommas: None +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +LambdaBodyIndentation: Signature +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: None +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 2 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyReturnTypeOnItsOwnLine: 60 +PenaltyIndentedWhitespace: 0 +PointerAlignment: Right +PPIndentWidth: -1 +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: true +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + BeforeNonEmptyParentheses: false +SpaceAroundPointerQualifiers: Default +SpaceBeforeRangeBasedForLoopColon: true +SpaceInEmptyBlock: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInConditionalStatement: false +SpacesInContainerLiterals: true +SpacesInCStyleCastParentheses: false +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParentheses: false +SpacesInSquareBrackets: false +SpaceBeforeSquareBrackets: false +BitFieldColonSpacing: Both +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseCRLF: false +UseTab: Never +WhitespaceSensitiveMacros: + - STRINGIZE + - PP_STRINGIZE + - BOOST_PP_STRINGIZE + - NS_SWIFT_NAME + - CF_SWIFT_NAME +... + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fc597c9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.history +.sorm* +.vscode +a.out +db.sqlite3 + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..dfc73df --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +all: build run + +build: + gcc main.c -lsqlite3 -lreadline -o sorm + gcc -shared -o sorm.so -fPIC main.c -lsqlite3 -lreadline + + +run: + ./sorm \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/cli.h b/cli.h new file mode 100644 index 0000000..3497f1f --- /dev/null +++ b/cli.h @@ -0,0 +1,184 @@ +#ifndef SORM_CLI_H +#define SORM_CLI_H +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "sorm.h" + +const char * history_filename = ".sorm_history"; + + int _sorm_readline_accept_line(int count, int key) { + if (strchr(rl_line_buffer, ';')) { + + rl_done = 1; + return 0; + } + rl_insert_text("\n"); + return 0; +} + +char* _sorm_autocompletion_generator(const char* text, int state) { + const char* completions[] = { + "exit", + sorm_last_query, + sorm_last_query_expanded, + "python", + "history", + "memory", + "truncate", + NULL + }; + int list_index; + + if (!state) { + list_index = 0; + } + + while (completions[list_index] != NULL) { + if (strncmp(completions[list_index], text, strlen(text)) == 0) { + return strdup(completions[list_index++]); + } + list_index++; + } + + return NULL; +} + + char** _sorm_autocomplete(const char* text, int start, int end) { + rl_attempted_completion_over = 1; + return rl_completion_matches(text, _sorm_autocompletion_generator); +} + + + + int +_hs_read_file (const char *filename, char *buffer, size_t size) +{ + int fd; + ssize_t bytes_read; + + fd = open (filename, O_RDONLY); + if (fd < 0) + return -1; + + bytes_read = read (fd, buffer, size); + + close (fd); + + if (bytes_read < 0 || (size_t)bytes_read != size) + return -1; + + return 0; +} + + +int +sorm_cli_history_dump (const char *filename) +{ + register int line_start, line_end; + char *input; + struct stat finfo; + size_t file_size; + + if (stat (filename, &finfo) < 0) + return -1; + + file_size = (size_t)finfo.st_size; + input = (char *)malloc (file_size + 1); + if (!input) + return -1; + + if (_hs_read_file (filename, input, file_size) < 0) { + free (input); + return -1; + } + input[file_size] = '\0'; + + for (line_start = line_end = 0; line_end < file_size; line_end++) { + if (input[line_end] == '\n') { + input[line_end] = '\0'; + + printf ("%s\n",input + line_start); + + line_start = line_end + 1; + } + } + + if (line_start < file_size) + printf ("%s\n",input + line_start); + + free (input); + + return where_history (); +} + + char sorm_history_filename[4096]; + +void sorm_cli_init(const char * history_filename){ + strcpy(sorm_history_filename, history_filename); + rl_bind_key('\n',NULL); + rl_bind_key('\r', NULL); + rl_add_defun("custom-accept-line", _sorm_readline_accept_line, '\n'); + rl_add_defun("custom-accept-line-cr", _sorm_readline_accept_line, '\r'); + rl_variable_bind("enable-bracketed-paste", "on"); + rl_attempted_completion_function = _sorm_autocomplete; + rl_variable_bind("show-all-if-ambiguous", "on"); + rl_variable_bind("menu-complete-display-prefix", "on"); + + using_history(); + read_history(sorm_history_filename); +} + +char sorm_cli_previous_command[sizeof(rl_line_buffer)]; +char * sorm_cli_readline(char * prompt){ + char * result = readline(prompt); + if(strcmp(rl_line_buffer,sorm_cli_previous_command)){ + add_history((const char *)result); + write_history(sorm_history_filename); + } + strcpy(sorm_cli_previous_command,rl_line_buffer); + + return result; +} + + +bool sormrepl_handle_command(char * command){ + if(!strncmp(command, "history",7)){ + sorm_cli_history_dump(history_filename); + return true; + } + return false; +} +void sormrepl(int sorm){ + sorm_t * db = sormg(sorm); + char sql[4097]; + + sorm_cli_init(history_filename); + char * query; + while((query = sorm_cli_readline("sql> "))){ + if(sormrepl_handle_command(query)) + continue; + sorm_ptr res = sormq(sorm,query); + if(res){ + if(sormqt(query) == SORM_SELECT){ + int length = sormlv(res); + sormfmtd(res); + free(res); + }else if(sormqt(query) == SORM_DELETE){ + printf("%d records affected.\n",res); + }else if(sormqt(query) == SORM_INSERT){ + printf("Last insert id: %d.\n",res); + } + } + + printf("Rows: %lld, Execute %s, Format: %s\n",sorm_row_count, format_time(_sorm_query_duration),format_time(_sorm_result_format_duration)); + printf("%s\n",rmalloc_stats()); + } +} +#endif \ No newline at end of file diff --git a/main.c b/main.c new file mode 100644 index 0000000..babdc2f --- /dev/null +++ b/main.c @@ -0,0 +1,39 @@ +#include "sorm.h" +#include "cli.h" + +int main() { + int db = sormc("db.sqlite3"); + //sormq(db,"DROP TABLE IF EXISTS pony;"); + printf("%d\n",db); + sormq(db, "CREATE TABLE IF NOT EXISTS pony (id INTEGER PRIMARY KEY AUTOINCREMENT,name,age);",NULL); + sorm_pk iid = sormq(db, "INSERT INTO pony (id,name,age) VALUES (NULL,%s,%d);", + "Teenii", + 19 + ); + iid = sormq(db, "INSERT INTO pony (id,name,age) VALUES (NULL,%s,%d);", + "Amber", + 20 + ); + iid = sormq(db, "INSERT INTO pony (id,name,age) VALUES (NULL,%s,%d);", + "Feuerherz", + 20 + ); + + iid = sormq(db, "INSERT INTO pony (id,name,age) VALUES (NULL,%s,%d);", + "Retoor", + 34 + ); + sorm_str csv = sormq(db, "SELECT * FROM pony WHERE id in (?i,?i,?i)",1,2,3); + sorm_str csv2 = sormq(db, "SELECT * FROM pony WHERE id = %d and age = %d ", 1,33); + sorm_str csv3 = sormq(db, "SELECT * FROM pony LIMIT 2"); + //free(csv3); + //free(csv2); + if(csv2) + printf("%s\n",csv2); + printf("%s\n",csv3); + free(csv3); + sormd(db); + printf("%s\n",rmalloc_stats()); + db = sormc("db.sqlite3"); + sormrepl(db); +} diff --git a/sorm b/sorm new file mode 100755 index 0000000000000000000000000000000000000000..ba5071a3308e867cf74bc2051c5777e366c39b9e GIT binary patch literal 216384 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

kj< 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 +#include +#include +#include +#include +#include +#include +#include +#include "str.h" + +sqlite3 *db; +sqlite3_stmt *stmt; + + +char * sorm_last_query = NULL; +char * sorm_last_query_expanded = NULL; + +nsecs_t _sorm_query_start = 0; +nsecs_t _sorm_query_end = 0; +nsecs_t _sorm_query_duration = 0; + +nsecs_t _sorm_result_format_start = 0; +nsecs_t _sorm_result_format_end = 0; +nsecs_t _sorm_result_format_duration = 0; + +int64_t sorm_row_count = 0; + +typedef struct sorm_t { + sqlite3 * conn; + int current_row; + int current_column; + char * csv; + nsecs_t time_query_start; + nsecs_t time_query_end; + nsecs_t time_query_duration; + nsecs_t time_result_format_start; + nsecs_t time_result_format_end; + nsecs_t time_result_format_duration; +} sorm_t; +typedef char * sorm_pk; +typedef char * sorm_int; +typedef char * sorm_ptr; +typedef unsigned char * sorm_str; +typedef double sorm_double; +typedef double sorm_float; +typedef bool sorm_bool; + +int sormc(char * path); +void sormd(int db); +char * sormpt(char * sql, int number); +unsigned int sormcq(char * sql, char * out); +unsigned int sormpc(char * sql); +sqlite3_stmt * sormb(sorm_t* db, char * sql, ...); +sorm_ptr sormq(int db, char * sql, ...); +char * sorm_csvc(int db, sqlite3_stmt * stmt); +char * sorm_csvd(int db, sqlite3_stmt * stmt); +char * sorm_csv(int db,sqlite3_stmt * stmt); + + + +typedef enum sorm_query_t { + SORM_UNKNOWN = 0, + SORM_SELECT = 1, + SORM_INSERT = 2, + SORM_UPDATE = 3, + SORM_DELETE = 4, + SORM_CREATE = 5 +} sorm_query_t; + +const int sorm_null = -1337; + + +sorm_t ** sorm_instances = NULL; +int sorm_instance_count = 0; + + + +int sormc(char * path){ + // sorm connect + printf("HIERR\n"); + sorm_instance_count++; + sorm_instance_count++; + sorm_instances = realloc(sorm_instances,sorm_instance_count * sizeof(sorm_t *) + sorm_instance_count * sizeof(sorm_t)); + + printf("HIERR\n"); + sorm_t * db = &sorm_instances[sorm_instance_count - 1]; + + printf("HIERR\n"); + db->conn = NULL; + + printf("HIERR\n"); + db->csv = NULL; + db->current_column = 0; + db->current_row = 0; + db->time_query_duration = 0; + db->time_query_end = 0; + db->time_query_start = 0; + db->time_result_format_duration = 0; + db->time_result_format_end = 0; + db->time_result_format_start = 0; + + if(sqlite3_open(path,&db->conn)) + { + fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db->conn)); + return 0; + } + printf("DONE!\n"); + return sorm_instance_count; +} +sorm_t * sormg(int ptr){ + return &sorm_instances[ptr -1]; +} + +char * sormgcsv(int ptr){ + /* sorm get csv*/ + sorm_t * db = sormg(ptr); + return db->csv; +} + +void sormd(int sorm){ + sorm_t * db = sormg(sorm); + if(sqlite3_close(db->conn)) + { + fprintf(stderr, "Error closing database: %s\n", sqlite3_errmsg(db->conn)); + } + if(sorm_last_query){ + free(sorm_last_query); + sorm_last_query = NULL; + } + if(sorm_last_query_expanded){ + free(sorm_last_query_expanded); + sorm_last_query_expanded = NULL; + } + +} + +char * sormpt(char * sql, int number){ + // param type + char * sqlp = sql; + char * result = NULL; + int index = 0; + while(*sqlp){ + if(*sqlp == '%' || *sqlp == '?'){ + sqlp++; + switch(*sqlp){ + case 'f': + result = "double"; + break; + case 's': + result = "text"; + break; + case 'd': + result = "int"; + break; + case 'b': + result = "blob"; + break; + default: + result = "?"; + break; + } + sqlp++; + index++; + + } + if(index == number){ + return result; + } + if(*sqlp) + sqlp++; + } + if(number > index){ + printf("RETURNED\n"); + return NULL; + } + return NULL; +} + + +unsigned int sormcq(char * sql, char * out){ + // clean query + // converts %s %i parameters to ? + + unsigned int count = 0; + while(*sql){ + if(*sql != '%' && *sql != '?') + *out = *sql; + else{ + count++; + sql++; + *out = '?'; + } + out++; + sql++; + } + *out = 0; + return count; +} + +unsigned int sormpc(char * sql){ + + int number = 0; + while(sormpt(sql,number) != NULL) + number++; + printf("FOUND: %d\n",number); + return number; +} + +char * sormcts(int column_type){ + if(column_type == SQLITE_INTEGER) + return "integer"; + else if(column_type == SQLITE_TEXT) + return "text"; + else if(column_type == SQLITE_FLOAT) + return "float"; + else if(column_type == SQLITE_NULL) + return "null"; + else if(column_type == SQLITE_BLOB) + return "blob"; + return "?"; +} +/* +Execute 3.35s, Format: 36.77s +Memory usage: 537 GB, 96.026 allocated, 96.024 freed, 2 in use. +*/ +char * sorm_csvc(int db, sqlite3_stmt * stmt){ + sormstr_t * str = sormstrn(512); + unsigned int column_count = sqlite3_column_count(stmt); + for(int i = 0; i < column_count; i++){ + const char * column_name = sqlite3_column_name(stmt,i); + sormstra(str,column_name); + sormstra(str,"("); + char column_type[1000] = ""; + sprintf(column_type,"%s",sormcts(sqlite3_column_type(stmt,i))); + sormstra(str,column_type); + sormstra(str,")"); + + // if(i != column_count - 1) + sormstra(str,";"); + } + return sormstrc(str); +} +char * sorm_csvd(int sorm, sqlite3_stmt * stmt) { + sorm_t * db = sormg(sorm); + int rc = SQLITE_ROW; + int column_count = sqlite3_column_count(stmt); + /* + sormstrn(1) + Execute 3.41s, Format: 36.77s + Memory usage: 5 MB, 96.061 (re)allocated, 96.024 unqiue freed, 2 in use. + sormstrn(512) + Execute 3.68s, Format: 36.83s + Memory usage: 537 GB, 96.026 allocated, 96.024 freed, 2 in use. + sormstrn(256) + xecute 3.42s, Format: 37.33s + Memory usage: 6 MB, 96.052 (re)allocated, 96.024 unqiue freed, 2 in use. + */ + sormstr_t * str = sormstrn(512); + while(rc == SQLITE_ROW){ + sorm_row_count++; + for(int field_index = 0; field_index < column_count; field_index++){ + if(sqlite3_column_type(stmt,field_index) == SQLITE_INTEGER){ + char temp[1000] = ""; + sprintf(temp, "%lld",sqlite3_column_int64(stmt,field_index)); + sormstra(str,temp); + }else if(sqlite3_column_type(stmt,field_index) == SQLITE_FLOAT){ + char temp[1000] = ""; + sprintf(temp, "%f",sqlite3_column_double(stmt,field_index)); + sormstra(str,temp); + } else if(sqlite3_column_type(stmt,field_index) == SQLITE3_TEXT){ + const char * temp = sqlite3_column_text(stmt,field_index); + sormstra(str,temp); + } else { + // exit(1); + } + // if(field_index != column_count - 1) + sormstra(str,";"); + } + sormstra(str,"\n"); + rc = sqlite3_step(stmt); + } + char * text = sormstrc(str); + if(*text) + if(text[strlen(text)-1] == '\n') + text[strlen(text)-1] = 0; + return strdup(text); +} + +char * sorm_csv(int sorm,sqlite3_stmt * stmt){ + sorm_t * db = sormg(sorm); + sorm_row_count = 0; + char * column_names = sorm_csvc(sorm,stmt); + char * data = sorm_csvd(sorm,stmt); + char * result = (char *)malloc(strlen(column_names) + strlen(data) + 2); + result[0] = 0; + strcat(result,column_names); + if(*column_names) + strcat(result,"\n"); + free(column_names); + strcat(result,data); + free(data); + return result; +} + +sqlite3_stmt * sormb(sorm_t* db, char * sql, ...){ + // Bind parameters to statement and return amount of parameters + int rc = 0; + sqlite3_stmt * stmt; + va_list args; + va_start(args,sql); + unsigned int number = 0; + char * clean_query = (char *)malloc(strlen(sql) + 1); + unsigned int parameter_count = sormcq(sql,clean_query); + free(clean_query); + + return stmt; +} + +char * sormm(sorm_t * db){ + /* sormmemory */ + return rmalloc_stats(); +} + +sorm_ptr sormq(int sorm, char * sql, ...){ + sorm_t * db = sormg(sorm); + if(db->csv){ + //free(db->csv); + //db->csv = NULL; + } + _sorm_query_start = nsecs(); + db->time_query_start = nsecs(); + va_list args; + va_start (args,sql); + sqlite3_stmt * stmt; + sorm_ptr result = NULL; + char * clean_query = malloc(strlen(sql) + 1); + unsigned int parameter_count = sormcq(sql,clean_query); + int rc = sqlite3_prepare_v2(db->conn, clean_query, -1, &stmt, 0); + if (rc != SQLITE_OK) { + fprintf(stderr, "%s\n", sqlite3_errmsg(db->conn)); + } + free(clean_query); + int number = 0; + for(int i = 0; i < parameter_count; i++){ + number++; + char * column_type = sormpt(sql,number); + int arg_index = number - 1; + if(!strcmp(column_type, "int") || !strcmp(column_type, "integer") || !strcmp(column_type, "number")) { + rc = sqlite3_bind_int(stmt, number, va_arg(args,int)); + }else if(!strcmp(column_type, "int64")){ + rc = sqlite3_bind_int64(stmt, number,va_arg(args,__uint64_t)); + }else if(!strcmp(column_type, "double") || !strcmp(column_type, "dec") || !strcmp(column_type, "decimal") || !strcmp(column_type, "float")){ + rc = sqlite3_bind_double(stmt, number,va_arg(args,double)); + }else if(!strcmp(column_type, "blob")){ + size_t size = (size_t)va_arg(args,size_t); + unsigned char * data = va_arg(args,unsigned char *); + rc = sqlite3_bind_blob(stmt, number, data, size, SQLITE_STATIC); + }else if(!strcmp(column_type,"text") || !strcmp(column_type,"str") || !strcmp(column_type,"string")) { + unsigned char * data = va_arg(args, unsigned char *); + rc = sqlite3_bind_text(stmt, number, data, -1, SQLITE_STATIC); + } + if (rc != SQLITE_OK) { + fprintf(stderr, "Failed to bind parameters: %s\n", sqlite3_errmsg(db->conn)); + result = NULL; + } + } + rc = sqlite3_step(stmt); + if (rc != SQLITE_DONE && rc != SQLITE_ROW) { + fprintf(stderr, "Execution failed: %s\n", sqlite3_errmsg(db->conn)); + }else if(rc == SQLITE_DONE){ + if(!sqlite3_strnicmp(sql,"SELECT",6)){ + result = 0; + }else { + result = (sorm_ptr)sqlite3_last_insert_rowid(db->conn); + } + } else if (rc == SQLITE_ROW) { + result = sorm_csv(sorm,stmt); + } + + else{ + fprintf(stderr, "Execution failed: %s\n", sqlite3_errmsg(db->conn)); + + } + if(sorm_last_query){ + free(sorm_last_query); + } + if(sorm_last_query){ + free(sorm_last_query_expanded); + } + sorm_last_query = strdup(sqlite3_sql(stmt)); + sorm_last_query_expanded = strdup(sqlite3_expanded_sql(stmt)); + sqlite3_finalize(stmt); + _sorm_query_end = nsecs(); + _sorm_query_duration = _sorm_query_end - _sorm_query_start; + db->time_query_end = nsecs(); + db->time_query_duration = db->time_query_end - db->time_query_start; + db->csv = result; + return result; +} + + + +char sormlc(char * sql){ + // returns last char + char last_char = 0; + while(*sql){ + if(*sql == ' ' || *sql == '\t' || *sql == '\n') + continue ; + + //printf("%c\n",*sql); + last_char = *sql; + sql++; + } + return last_char; +} + +int sormlv(char * csv){ + size_t longest = 0; + while(*csv){ + char * found = strstr(csv,";"); + if(found){ + if(found - csv > longest) + longest = found-csv; + csv = csv + (found - csv) + 1; + }else{ + break; + } + } + return longest; +} + +sorm_query_t sormqt(char * sql){ + while(*sql && isspace(*sql)) + sql++; + if(!sqlite3_strnicmp(sql,"select",6)) + return SORM_SELECT; + else if(!sqlite3_strnicmp(sql, "update",6)) + return SORM_UPDATE; + else if(!sqlite3_strnicmp(sql, "delete",6)) + return SORM_DELETE; + else if(!sqlite3_strnicmp(sql, "create",6)){ + return SORM_CREATE; + }else { + return SORM_UNKNOWN; + } +} + +char * sormrq(FILE * f){ + + static char buffer[4097]; + buffer[0] = 0; + char * bufferp = buffer; + char c; + bool in_string = false; + while((c = fgetc(f)) != EOF && strlen(buffer) != sizeof(buffer) -2){ + *bufferp = c; + if(c == '"') + { + in_string = !in_string; + } + if(!in_string && c == ';'){ + break; + } + bufferp++; + *bufferp = 0; + } + return strdup(buffer); + +} + +char * sormcsvn(char * csv){ + if(!csv || !*csv) + return NULL; + char * pos = strstr(csv,";"); + char * pos2 = strstr(csv,"\n"); + if(pos2){ + if(pos > pos2){ + pos = pos2; + } + //pos = pos > pos2 ? pos2 : pos; + } + if(!pos || !*pos) + return strdup(csv); + + int length = pos - csv; + + char * result = malloc(length + 2); + strncpy(result,csv,length); + result[length] = 0; + //csv += strlen(result); + return result; +} + +char * sormfmt(char * csv){ + _sorm_result_format_start = nsecs(); + size_t longest = sormlv(csv); + char * field; + /* + sormstrn(1) + Execute 3.77s, Format: 36.40s + Memory usage: 6 MB, 96.055 (re)allocated, 96.024 unqiue freed, 2 in use. + sormstrn(longest); + Execute 3.27s, Format: 36.61s + Memory usage: 6 MB, 96.053 (re)allocated, 96.024 unqiue freed, 2 in use. + sormstrn(longest * 2); + xecute 3.42s, Format: 37.33s + Memory usage: 6 MB, 96.052 (re)allocated, 96.024 unqiue freed, 2 in use. + sormstrn(512); + Execute 3.11s, Format: 36.45s + Memory usage: 6 MB, 96.048 (re)allocated, 96.024 unqiue freed, 2 in use. + */ + sormstr_t * str = sormstrn(longest + 2); + while(*csv && (field = sormcsvn(csv))){ + sormstra(str,field); + for(int i = 0; i < longest - strlen(field); i++) + sormstra(str," "); + + csv += strlen(field); + while( *csv == ';' || *csv == '\n'){ + if(*csv == '\n') + sormstra(str, "\n"); + csv++; + } + free(field); + } + _sorm_result_format_end = nsecs(); + _sorm_result_format_duration = _sorm_result_format_end - _sorm_result_format_start; + return sormstrc(str); +} + +void apply_colors(char * csv){ + char * end; + + bool even = false; + while(*csv){ + printf("%s\n",csv); + end = strstr(csv,"\n"); + char * line; + if(end) + { + line = (char *)malloc(end -csv + 1024); + strncpy(line,csv,end-csv); + }else{ + line = (char *)malloc(strlen(csv) + 1024); + strcpy(line, csv); + } + if(even){ + printf("%s","\033[37m"); + } + printf("%s\n",line); + free(line); + if(even){ + printf("%s","\033[0m"); + } + even = !even; + csv += end-csv; + + if(*csv && *(csv + 1)) + csv++; + } + +} + +void sormfmtd(char * csv){ + char * formatted = sormfmt(csv); + printf("%s\n",formatted); + free(formatted); +} + + + + + +#endif \ No newline at end of file diff --git a/sorm.py b/sorm.py new file mode 100644 index 0000000..9119455 --- /dev/null +++ b/sorm.py @@ -0,0 +1,162 @@ +import ctypes +import csv +from csv import DictReader +import io +import tempfile +import time + +class DictReader: + + def get_column_types(self): + types = [] + for column in self.columns: + name = column.split("(")[0] + type = column.split("(")[1] + type = type.split(")")[0] + if type == "integer": + types.append(int) + if type == "text": + types.append(str) + return types + + def get_column_names(self): + names = [] + for column in self.columns: + name = column.split("(")[0] + names.append(name) + return names + def __init__(self, data): + self.result = 0 + if type(data) == int: + self.data = '' + else: + self.data = data.decode(); + self.rows = [row.split(";")[:-1] for row in self.data.split("\n")] + + self.columns = self.rows[0] + self.rows.pop(0) + if type(data) == str: + self.result = len(self.rows) + else: + self.result = data + self.column_types = self.get_column_types() + for row in self.rows: + for index,field in enumerate(row): + row[index] = self.column_types[index](field) + self.column_names = self.get_column_names() + + + + def __iter__(self): + return self.rows.__iter__() + + + + +libc = ctypes.CDLL('libc.so.6'); + + +class Sorm: + + def __init__(self): + self.lib = ctypes.CDLL('./sorm.so') + self.sormq = self.lib.sormq + self.sormq.argtypes = [ctypes.c_int, ctypes.c_char_p]; + self.sormq.restype = ctypes.c_char_p + + self.sormc = self.lib.sormc + self.sormc.argtypes = [ctypes.c_char_p]; + self.sormc.restype = ctypes.c_int; + + self.sormd = self.lib.sormd + self.sormd.argtypes = [ctypes.c_int]; + self.sormd.restype = None + + self.sormm = self.lib.sormm + self.sormm.argtypes = [ctypes.c_int]; + self.sormm.restype = ctypes.c_char_p + +class SormDb(Sorm): + + def __init__(self,path): + super().__init__( + + ) + self.path = path + self.conn = None + + def c(self): + if not self.conn: + self.conn = self.sormc(self.path.encode()) + return self.conn + + def __enter__(self): + self.c() + return self + + def __exit__(self,*args, **kwargs): + self.d() + + def q(self, sql,*args) -> DictReader: + ctypes_list = [] + for arg in args: + if type(arg) == int: + ctypes_list.append(ctypes.c_int) + if type(arg) == str: + ctypes_list.append(ctypes.c_char_p) + self.sormq.argtypes = [ctypes.c_int, ctypes.c_char_p] + ctypes_list + if not sql.lower().startswith("select"): + self.sormq.restype = ctypes.c_int + else: + self.sormq.restype = ctypes.c_char_p + params = tuple([self.conn, sql.encode()] + list(arg.encode() if type(arg) == str else arg for arg in args)) + result = DictReader(self.sormq(*params)) + self.m = self.sormm(self.conn).decode() + return result + + def d(self): + if not self.conn: + return + self.sormd(self.conn) + self.conn = None + +# Load the shared library +lib = ctypes.CDLL('./sorm.so') + +free = libc.free +free.argtypes = [ctypes.c_void_p] +free.restype = None + + + + +rsomm = lib.sormm +rsomm.argtypes = [ctypes.c_int]; +rsomm.restype = ctypes.c_char_p; + +disconnect = lib.sormd +disconnect.argtypes = [ctypes.c_int]; + +start = time.time() +for x in range(1): + + with SormDb("db.sqlite3") as db: + + + + for x in range(1): + #db.q("BEGIN TRANSACTION") + #for x in range(100000): + # db.q("INSERT INTO pony (name,age) VALUES (?s,?d);","Python Pony",1337) + #db.q("COMMIT") + result = db.q("SELECT * FROM pony WHERE id > ?d AND name like ?s ORDER BY id",1337, "%hon Pon%"); + #for row in result: + # print(row) + print(result.column_names) + print(len(result.rows),"records") + print(db.m); +end = time.time() +duration = end - start +print("Duration: {}s".format(duration)) + + \ No newline at end of file diff --git a/sorm.so b/sorm.so new file mode 100755 index 0000000000000000000000000000000000000000..369b11ca8055e4502f004a129e7ab72771ed2027 GIT binary patch literal 256088 zcmeGFdt6l2_s5SPP!Vs4cnM1lNsUSkO${w=GSR8LAbG(q4!1#2gmD1H(!y&Xsc33+ z^G#aDyNi*PS?^S$QY$mEQo0#g8KfE6jm-47*52#PUaXkM^K)e?$*4TdM#|6Qzgj;kuM@shqMY-y_J*ewW7`pyT9wA3Dx{$8+Fz+xNMt z|8LG0N5?h(rcWr}$A@VD_Pc$)$#5Lj%m2R{Ri_nC=acns>v9zoP;c~Z$0D8=eIOn; zajFHmtwd%=C4TNg8u#yMwd`E}>|4`*nR35pdi#vPU4OS72fMA-;IIVV9gx~X3bq~$ zUB7g6sKXkv?Ec_BC4tdFQAAU3XLLBUgfTXt{+2DEZ? zZg8};Mn{AOLOz0mBdqWimCxNaGBD8!a99AXz;H)sZQ?f>m5xA%BhFe@5D^N_N}edP z!WI-xv?4+sfdvsk5zmcjUtk4BL_j{QPFOnVi7i_Mwk~)(GxU}42dvO594(_mm*Z~O z9Mh`ChF)4Wrn|K?EVBLmgRRQos5nPds1+QSbX#SsiilPb1rT(PSyoiUSgX&57SRbe zw{^Dd?AQ?4sZU^VfK?b8+NP*zS-Vwn>md6PR?7%SaLdju0vzEM?6m>{t>uvaPR_uV z5jTdGty-VdCNN-3;G6MovdPPXt;iGB&2a7|(Vd_@TR1G( z@35>eD=uP5SckBd&$QguvLLXst##9~!hjY_Izg^N`&fZ}90kdNtwUReU0)PY*s5hg zVw+8lzQI{gw;cjwTL%{ehX%HDgtv1PgspR~80?4+UJ@DIBEX7l@40bFL2&Tsf^klui_2T~QJcOdPDbO6%3kluszKBNyI9fE}0 zhmfk(C(HT>-Va0i7}6(@Y9M_M3AZmHeXTxORxP}L3+V);I!N`9euQ)q(oc|1L;4xg zFOYtP^f#n)kp6*m9#TsPfL4&Oe_$}Qfz%EXw6oO#QYT1Zkh(y+2vQG7y&y$E>J2Fp zQXfctA>np8yk7xn0O@FY9|Z4%>GKeH9}4MONFyL!4`~#n8zGH>WN+i(^UaWMfi#}@ z1bB~wbQ`2;kY+%-9nu|;aJv)UXF_s8N`{mI$qi{1q&bjq%Yyf8NFGSJkn$kqL&9w# zyx#+95$VP7ejlWzkXAq{gtQ7$F{Cw+9)z?3(nd%RL3$ig8Kfs6Jq_tuNY6pq4(SC* zFG6|=(yNeOgY-Hi+}?oqJ&-CPRYBSZ=>VjIkPbom5K=Xyk05;t=_sVnA$tY&|Bc?!x)DB~gLDBB3=~#NNUb3SLuw1D z9VFa3zMo6O}#X=ejX&fXcq+20Pgft1#WJvLlra+nw3Afwf{SHVo zAte$^hIcol>kg#uzjz?u9dsbb0V(+g9PklG% z{n?{BU3}BS$rC#Kp0xGS`!8H|qBpq0^Q<5a9>y}Ej$hi$s%*b`GGU3jWb`4ip$ z7abZNklN3hS9Qt7Awd^IYB*-y`p>z)Ug`m#Ki)Ly-bZKN^Ym+rzM8i<;-RHgE2d0- z`2Id8w`M=_&A2DlR>rLF=vsHtGyU%jI&$EP$DE9_cct+PMdyZB`M)B&ys23@`~bl(eCdWU`d=YP^C9t$oD%~)Gd8JN^& z-0&V9*PWYxW%@SHyzf{4{aWA8R;Ls_zNk;@8~6Mb)Ay>6hh6@`oR6|L*GznT(E~HP zWtM*yaAVT%Veee_!#8g`f313T=)0f)_{a03X0Cbg@w~TY+!8vXXIIaipIy5@E#Qs4 zWpf^1)ajwJj$~UvuA-_b!PY-s9{`Gvj7IceKZnPoM6%XGuW$)&-xu zzGzb8f@PqWLaLg&?(X6V?c+W<`bWjY$!m{(=#Kn$eZQxii5Zi()VF`>*of0ly$~?@ z;EIiNBHM?zdAj57&`I52_;Km%G4102cmR&yKeJQAcb(oJ((A3^LsOt_kFVNyt~&4H zy?<}+GpYT7p!Gq+ljC0b=(;goKmRS@=nFeH4TYFlx+o~L_q{C+ce?K09)Xp=E_&eI z@C7Fu`^WtL_JJNhCeMuf=$^`;%8=79{64fYsOFo#Auq?4++5RG)^SjM($;6v3$8!7 za(ADvpDb+mVeC)O4?lR_*dxi0bxu4LmmlA-p!*dcUl`eIDhPjxk*=7zk1D+d?7BVN=iPU$iHp7)e)ezF^S|Hz z)aCErJ^zE2M|Z3Tf0H+#%bI(CPWxTKBl}K*{c(`i?ceU%1pDx_qp;(x3krYgAG)Jx z_M6+sEn0hR+`K8kU+A;fI}P65egEiw@8n&b^S97kFsZe8epZcE}t4TpPwQZ@eBSD`E~MFh0G zW!!xs|GDXhSKj~UlZkg6uR7HFp=~MYH>FPKvY^`=n;tD|JhS{%zag70Nj!Q}(Z!ezs z+8Y7C&HnVBDO=`WGIO{)=hrbW^v>V6ed1fz`sWt^eH6;pddlsSd%QOLv$q>>oORKp z=hnq$wR`Nc6SssG9ZJ|%dVb?%sOv)w?hLH{jb1A4PWjKKSkz;*Q7eZM^5AORow)^uR5l z1-YG1bjaM+Yy8iDKQsO3;{OHhYdvFnha;iKFaEja`lm0tD(TX1UrhMllxJt(_sF8u z;%@?75&u&VN;_=K17q z&GSxv;%bJUdg$z@9t!-#e>Xq*+zsp7=JMaoPh5TErylT{qd7kgfX(qKe(FEhPrnQ4 z+Pt4H{EQDhFKOQXYCriI>c`JR(65_|t4@CGzx5MubNuiOKmFxs=jQW2z)yQ!-o1JI z%8Q%lL4NvOk)JqR?!b;Eq;v{=52#x4C}m$MVxItNp}DouB;gfPT?je8&2z=g{lw2Ze)753&v~EpQ{Ly`zIb!-fcM{;<8S$i zt3iJJkUamIH+mH5B58M2VZ`=Hw_h&!$VSehfou7P;@H0LT5ssbBUk0-Q>qle?Q~ZWq$m0_ET?P`YG3Ie){!T z;E|Bzw#U!-a1acei<35f=C#Rw`t{X*%C#2ir@47ypdbG)sIm54WxVZ-~|xb;;1 zF2rhgwFa>oTcs-gL#*Pp(9p1TA^Qr|jv?0BbK0;@zo~o5VOEG${)+}9$sX^IBflTN zn1Jmi{bqGl@fKpe@}4&I5bp`Hlhxgdp3?$)K7MbfH@uIFeu942I)(Uxi!^`Zxb`!I z_yE=4L##7*>HO~{-j4Xq#P1?LQ^iS$HRwrgZ-00263qLUpO|ZBG|A5z)$c;AH+tyv zZq;wr?`oYBVuj(&eb{oz|0`6Vd$8lchV6%&TU}>`Sl8lBZ`cMzs5k3nkXYX9|I~Uh z*`Fgn6CTv|=k=TAr1S2_2^Y3A`YV zi62(ubBJ{T2O`*@m}>hL&WnB$FVgW)MmsuFex_yU{M<_RM?hjbzSgKgD&=P++3%wK z-$eH3V9>z&OuR$aCw$SWw#0VY&)@h(7;HDFSNLv9t-C_3q4-4-Y#ZsY80uer-`Bi7 zowozE@1}4K@VhSDhEP6#`c>X%;GlZ2+v{t}XV0_RZ~)nRD1K6>Hudu>_{a9L zC~m2^RuR;biU%>ytV%n zIzN+?wPl^9eiSGAQ3_Nn)>|fhX?i!=he16kUZGED$Kf~{uPUF={_Dwp4EebSzkr49 zapHeaJolphZpUXlOd{z28ydi_C;OpPKZ&A#zNR=Vo~Hemko{H~PoBX6A2$3>6}Q1^ zehjf9@yk@$K3A{s9UzQj_+&upX`O$&eeYH4y%6h#N!tD>*+&x}b*ttz#NVQE@16f? z{*HdL@~B*C_{A)2%gFwI%FipSHMjEvPa>##*oj{-!&XQ3bEqEjsUGZnu7tS4dONdJ z=ieUZODR9SDL-lCXAAWg^<^|LyT3d^^YX|q^m#ASZ`N_jf9W$C;CIWoogsb$e#s0Q zey5DvaJ8<3`7ufZ+y5c*{|ny0f$bah3QwR=Ts1zgxjlcqO8s;beMx$oE}nXb2Fv^8 zbZx(y{M=3DilTwdMf?`3&nxi@eAs;LNaI7!f3@Q+dbjlyyrcgSKWhiU#2r-s>7xGU zPEG{2MVGt~STZe2#>q}~hjIn~eeS81}9>=)5_6Q9=kwCm?;8aLu-V8-v}ar>3V zy%%W#=+)RNr}5-6njdc=-i_jC8?CR#6WZhF-X!}3Oz8=N_^xr`K?S6eFwd1_5+WrQz z|C!<;xs&Fh`ZU%k>W}@Y1HD4_2WXskh;e>0&DRU|Y6qjq{x!81V5(AYXn?YM{H{|e%hsa#R`papDqQ2y_uar^MY8bElf4dVst zCjtjRy{R+1seSLG^_$&Zr4%Pq+i5>9(?N^j9oI7vB0djOef|)l^Akh%)f6YEC{7kb z9OJf`;^BaZhjmoXQKFu2qx#%9zp4Kmil1&2|90FCrEzRCK3oLbW$G24f1-XAf4Syy z#E%l6I6!l|KX#)2e#0=$?Q!4<%1;`#uRUL6QF|p_)6{+;wQu7kn!iowEv5caNBzYf zH-4n^-hGp{xA|s@xA)%C+)aKyQR}Pj))=uK{*uO-!(VHAd;EEe=KZT_-nYwpfYzC7 z@j)fnuGDW9o(}ta$6xdbAJ%VHG}x>4Eyc6l@8Z?){9N0a{+*OGtzW_?EEL!F4X*))H3eOBl5 zSMsx#>g_#zNDH>^A6Wlj{rsmy^K9ZzQ+*!AhrnRlrFUCxAkNW# z+x;4(Q9hl-6N@#s$GuyrUpq^+p*>%}M{#w_rJB#D^On%~xiU`kjl^#!|MMQu{_TD` znfSHDN7(jM&p|Dvcs-LH5-9Co+<223$(>f%T`154HmFn{| z;wvG0SU*+2Yp{d(P#QPNX#HU2OjUb!+v7Ig2!##5=fG_?jXy;+{y=l6?KqSd$3v$W zXJ$};Jb(`c!uGm)g=ZWibbdae^?v~Q$LHxVpWmO+hKI>MoBS-Ler=DdlWCk;L+iRV zWPbzI|KF>$W4mA9NBO^)@_#$o*V^?-*I)KH{~L|NcX!r)wvhcz5dWCZ&sOSkeNKEb z#m}2`f50Bc8mL^ioYjU2WdAC~Vc-8~KOW+bQNMFtr+K4(v$oT?6eGr^FzW9s>AuP` z@^cdE4cnzr^wTv|t_koAGj4W1htv3fwoLPBw)39!Ts))9Ps|Zz7d9itL}I`k6jb`#(*5WM|zjD__yv zzQ6Gv#mNKxHLoK3MjEezDGqTy#_fBue}?9-+cdWRRO4Q_6;1OsRfF{q+riOyRg z#(^m`j+NjSZLrzn*lwzaU9=9Q+d9@fC^-86=b*NKlKh{h`Td((%?A=sq497it<&Bj z-kZ)lXIazp*3dY1+kVY&B>Ovh>hn4u()AFbcUzy(xO6H^1AAOu1aYY1_D_A^iOj9% zp&l^*ncXy5PX2GB{`g;-uRpZ?)4J}+Tn+5F`jp~%Jw7-M8@aQVlb`+6-`^(xJ*Zt? z{Z)fu#P6bdm|dj(+wr`P=7nGAy5lt(4>!Pi7|T^H+A)vLn@{Jp$H`b~msvI1{|q|s zeRSTM2b!MuA{w8kuGhSg?0192dV8Zm1A9D#tSDZ7r>=)5$o@~rFWN7oz_G`@N2#Bd zQ-8GM{733XSJL%k4Efnf{WNW!&d+}0zfv4Vf1>$l;@K4EyF~po(0nxZUTts3`6_D1 zdRkwlk)MyLKmJv&?P+?pE{1Yp{l|%ZcOBK|xfR;pZpX{P586kF@i~a%_8F?5XgY5x z#YyfT8azcjiQ+#U4Pb-jR$Cb5e-(W%@B{I_G_D5GJXk>dD~K!1PpHUGcgp`7`r^yZ ze=zZ*1x?G9Pwl>gu5<16(k#m7a?0m?h*#XQ$WQO$rhbl7K38FY!B(hV;s21(JT*kj zQ`b|yy%4DF>2{knUD=0QG2(vsHtN6k)BU$DFpuI^NAZxcxM_Yqpm_V9<^?FG+ODMh z$1ZPb-$;HU?rX}YQG5=faq=Mf=?e9M{o*H@r(l>>+g;S(Kc(xD6yoW$t_~OL>O1Iq zBmgG@*p8BYCyLwq=*HoE;~TJg=E29F(&f5ayR*i@ z{DS_c;sZ{wy-z%!+ABh|*L=#)d5V8~{CR@f@si2f!N-)JP_ln{iRQL_2=!l!`URcV z`isW-jBS{SxbQk3;hiDp)@nZxh6LTSN2s2N!9>q2y;a z`G1Z4Ur)T4+V>+Guk7+Jr}~K&^%F|vIv20~$B>@^G=FWO`(3HTw^3YO`nLvOQ2uAp z__k}824~2=oa#Aqt>zPnUrzB*H%{|u;1{<~A>Oc`R?>RL{$BMgm3ITJmwJ=^IjYZB z=zbUepD^6cQ2zg+>za)kTfJ%CpYWhQFAcBOz2yIQs!s>mFQjp@`(4_;BlyK_F~#AS z&oy7EvGoO&D}(AYns^BDKV!B1FZ#{8jQn3cLxcOt{soGwiuSrdpApAyj`8!uPa2dF z&!V`Ep>@kbn17xbl&9@hl3Kd;e6uXQM^5PL4yY3yQ$q{M``fxXJ zG`GjGaWr2K5%YB<+0UYS8%TayQ(Spzy|<3|ixfYnY5a^JevaDxe^2Q1+UxN5$UcPP z@D8#Mrgof`N)-m}joW6resR(F23ZZk@-v3`o40HKG%Q+mG*0IB)7(q;X;j{}`MSJ0 zu&%;w2PBN=`cq1({}YX$(kcHZ25Ud}=-pO(;%^Mpd=T;3)LtKbrg;wW-8BBh(R~1A&F%Vm9QrlpGm7#F)up!mRNi>H z-)q;;1oE?&=2N?V&Qp6mLC=A-qH+EZ&1?1epLJog*Wnkz1p>xTf>?*-!*Qzrintm~ zahr6p&VQov2LGp>>Y>G_n%nENZ^*uq;@m#(>okwd-K6d9{_-x3SGS(mjt`LkA89>5 zrn9!U|+l4!uO5cQM`1q03RrP2>N# zRoe6Cg)Ufn?btJ`>O-$lP!e^Wdc({({C`MHn$%xIMY3d)Q2;k2%UYEj!P%FiD(-tHs*G{s??_PRh1 z5`T^Ci#q81x2E#GO7@SDeT)tZtCq%@_|e*szLu~qq4qjK<8UVV9|rY+<-OxYZT~F! znNQ=)Gp}iWhU}-Pc_-Y86yshH^gAr?Z!{m#aBh79{?LDC8mJ1$&)@Kl_VE2Rw5WM5 zv4+ZfX-8dN8ZNDuDL!AP^(v0bxJA=AlPK!{di#2CfcDc!_AgWa-Aw)WYVF3_LH*^z zRBaedJeAtlBl7ti#rZ9CJ$MV*hfq9UM)6!qJR00$d1Hj1IP#xK+^)9~)K5R%uJivh z<^O#;?{{?G4Dz2&{++_V<#NrMo1Nv#$xZU+x?Gm)<|z|gscx@(Rz^;)+dE~#O_|wQ z?kP#hnQpzW`8}?b{3KUeMpja0#@%4(&2`W9q_{G&GIBE%O7*eabgw%p)s>l@GRGpb zyd1Y{ZeFfC-*TnodA;teT-!lTW_GUc$mG1VG`E)yvOMHS9jMMEkUB$7t~bTAQ0&Re z(r2HWlnEbPDcN~hxt5nyb1cp4b_=uI?A)YGSMtJKcaBRPl9cPlLXsDc*FE0_1yv`= zPM+<5k1GdjjE=K%a-r_MR@wq@MlR44<-meEp$|}=)I5(h*F6`D<;9HI$GS2zQ(bA< z;3?P2@pv<`a?_x3p<791T8fbP)JhVxw-?Tqku}Se z38CQ1axcKs!rrD_XMtNLrKUDDNy*O2P0Gju*U%bsJ&^5;Ot;IO4{nh`e!a7^GqPNs zq}+66gCqmXFdu6*!)tkZi2%J#Uk6o81r_ms@+9A)oKOLZ+s$^bX? z0V~EmAEQT|Ti3bzh|!pArJ*Ye%9507r71U7Rt|)y3tw{RGwxL#LGMaU%1yGZ++J|* zN=qd@Hz{8o>CW{ra*{)Fq+LMAgUZQrr{vOs0GM0cjYXoJv!L$vah#?=wjfsY4(xIC zQ8f%yvaO+tTzMX70(a6}Y+LlW@XK-3L79t@n8*2#bS_^$jj1H(fI2h|H+mmah z=Vn7=>%BSdOe~$t1udABjom&eHzPZX_Cf)Z-Pknzys8oO(fAR&7n!SG!L&QyodV;A zD3&$Lo#pmIow&S7S*h7`buTqEFE1l?h=s4N+-&F|7~@tB+FIT$sDd2bm>BR}WBp+X zp%L^O#IBOqq^b>J08qy(>cSX+fUs@UfZBrjBf$v_4apBdPV&k!{F-0M!6&!O(V>e!?-H#U=Q4QLj-pgOi-n9a${ zgs!e^Rk#syL6bFyRnK6#q8QD}%}&p;GH?fcOtN@==?>>j^3KX}W#p(qP<_T~g^-7c zwgXAqFb)H;m6V&EVf|}Qa&~s6<;lxUNl$_y9}Y>e(%ji;R$5wSUQRlW{<#oE8CjNB zPkj)XP)z!)!jnF$0@*t}>R8%C^9U)A+YOVhEwW)Grq57?;5rW~ISU79{E!KK+TLxt ziA`XVNlB-Y`^?<=9_;J34TMlm9)w zxd#gG%F3IYjME8Z+MS>4O-jkNPvJ_*UFdPUl5wnqzL5dFa`f@> zg4Ji7Q?-9jCQgOsG%WLTv*)`9W7TIt-70G&8o&wzW_+a~DqtBvj&riTxz;@O>V@?l zEd10mM191-xAWrz&|L0WSX(|~=fDTBs@+MDUmt;0lZqxENb-7m@< zp<$($nE}mWpDi_St_LE<=dp<~dTRpoIG~JiUz02%;APWUVO4^lX_X*pT8}B&ut?0o zFr<^XVYx)1s0eio*Sx%Jh*;6hab*mF%=s2p??$C(1D& z=d#aMR#H~B_MW5P=IS@SR(9!;DvQ?FUTB~!w{I};c=h<@&Vt21O!2r_gvCK-Hk{4n zRmZs8S)3Bgz%>Mz(cV2Q;U5 z7>Janw@h0@e^Pvo4Pd%Zz-t5h46|$ipRNqJVl#`q7p&byUE<4sBY_jump)X;O;f`!?#w@(Rhdz#b;G)!yWdoWXj3yMM zwu#4^Jqs2aImt<0bwvrGVt}4TI7#&;K`3yN=TV~oUJ<9N2?^ItYLG~Fse&_O$aS(i z3)U%gb|&@Qq4$a`Y6zLk#p{x$hr-$h8eChzFmHdvOM|q$tQ2)+L%Y?Is(ET3203>v z$iV1?u{ITMf6$=|l5$+IJb-`{KJDurxVzv<^1{HYb7Et-|B`|0#wJwAK|&7}`WjoS z#z;wb!!>YbO7?uqqppxWv=9cOm!`1vhkHGiH$6AkgX=-O&ciEppI(sUh0(_+)m5aC z9$ZQond(l?g8{{7?RC$~!=9N5QK*(UY7buLFeAN&#i&+$p$F)9eNPFh*4%_@vWK}y z&&EMOAEvM6U`3zfN{4I0Oyiga6ddFA+EpI`nS%gS2g64=A6zFJ$%}-$S$&|?)uj%$ z3#+c*v;%AeS2~0`4q)0yy)tf}8Ug}_6K#ugtsbRZ_HpV6Is>`Vwy@O3`o&9NHT(X1 zCva2uYLso7C60W#fkWUfp51(E<*0J5jhkkKVoL8<#b{NtHV z3g>}^4cwm~3b(OR@-p#OfL?jQjW8H^XbR9ZiMOJluX>=p)v`Aw-9DIZ59tWhp#Zm- za5nO_1}R@bZ7XW4>}*p9O?RngcMXXiLNR8aGu54z1Q)Y@9IA^!=wxu|2`%i&&dJEf z=EHj~`iwLiG_5{+cxX!X_|%lCAW6y0Ph}iW3Q~ zMmuHcn(#$>be;( z`?SV)-Q9=i>2QeZj>-!5;qEM0MdQ28T(IO$@<9G|edwFBF!ICjmpMl@2ED@i1X>EN zGGT|}>P1nwWW7e@$A|D{GwjtDd=Tj{;lr)5S#UzdamnPHl{CRyj(Vq>67}KPb3M2u zQJnVT^lZVjm6ZfN5SMRxaI-*bJWzkq_qp|F)lT}OidM^;3TqngTwHReBtdue=42(! zapQVF1@3WWTDjSI9=KJEcTPYeR|c@i$%G4MeTeU)UK@cae*2&X67)^Yp*})|!St-| z6=!6pz)d!|09^pL^m0>RPf{){Jabc^KGi3^tdCDxFd;kDZP7Z&marrP&uW40%7H$r zZ7!%TlveMo%- z7Z76Zd|xMo&)_6`jvH=Y!#Yh}zv6Bc$!Msrr7Q?en*Z!8MW~z%4_vEy@w=mx%si+{ zdsm9Ocbw_t-nnkLGXn!9tpnA#Lt_Mv+%S8?jp=OfLQ5-iF%2P%$Ksr(eW*n;`BRaQ zJJ+L`8`>Yf5XknztPMA!y|dtc77ja^8OgN#f$v-3q;UINe@L=F;JsV5D+T7&xp>PM z+Ey*0G2_xGeD3~HOfQrP43sy-yE*SYEyia|xB^}B06+<7CE41or*ZG72)Wkey7 z4aH!NffI30@MWrTg#ns@_jPR(6^GD>crykXIm1){Soo~$kaThA`;HgeAX7Iuw@^e1^dnQ$Lh-w8n@fOa6;J=mqcE}+|tnd;r8*Y?oiT&eIiG`>@| zRRMKqC*{FCP?&Gvf*0?@)9qRqKL52_Ie_6BzMO{d6(K*qgJ95w(G#!!eaN1wUFkV$ zl+p8r4!z6_dvtN(T`FrqI(%bpBUKBwP)F$qR6z?z>IomdJjN!+F&NH^SCFvw%Y!9K zCfs54W~iG)XrcBtmu25HoR@T!RN*^kdrUnikI20dj2!#Kg5};o3FZ|#q`=9=7Ud=u{!dCchs{pHo@93sp zY}MQuaG&k-mjlzj{9DbjftXTTGIfz}J4akKxvoBcdu?J3O@>F?^wH;6D&A7yK0Q3c*{vt@E=>@L=MVg7+hSK=7-G zR|`Ilc#Yt3#A^lj5U&$Fk9dRNONloMUP#X!ae@yfo*?+O#1jQ~5>FR=0&$PvX~gpd zpF_Mr@Oz0D3cieZiQpTEmkRzc@iM`85HA<}RpJ$bze#+T;QNSI3VxXQ0l|+FuNM3? z@fyK@C0;9d&_3P1b%M7e-XM5i;*Ek|N!&_m8vjFy2Ma!ec&Omxh=&V4o_K`d@x-G9 zpH4hl@Vkh|2%b#bA$S&Xr{Fon;{;zwJVEfq#1jQyMLb>bHN-uFZzi5E_!i;?g1B%B*9m?R@dm+r5^of|H*qVuY5ZSJJXr8+h=&S3ig>u-qlrfdek<`P!6y-q7W{VN zF@nz|?ht$yai`#Oh{p-OfOvx7_YhAMd?oR8!B-LY2wqA&U+~9>7YP0=@j}60AYLMP zCGk?h-zHur_z~jef`3lDLh$d2?-IP8c%|Uh0Ugf=1aC>aTJR3UYXt8^yjJi?;&p=e zBi!jQ;=zL7OgvQZ3BUiEIcn9K@f_EZ*K=5wFs|CN9c#Ytf60a3Jig=yi1Bf>WKAd=? z;G>9J_#cyCv)BJl;=zJXARa1sJn?YBrxTA5Jdt>m;BMm4g3l%%BX~A(hu{l{I|W}v zJWg=Czb6Q8_xD7>SCOA|!PgM?2)==MzTlGwSpfbUMKjs#2W;!Bi<{d?0bB;DdBjV_Ifx` zaC`lkF1Wq^^a$>veC7+DLcBn5-}*;z-}*;z-}*;z-}*=JJUVZ=;CB`eWKv@{FpBIpJeY5Jop3M zfAaATt>DGP>jd9Gyg~3Mi8l)VJaJ3>J+rrn2Md0Xc&OlC5DyppJK_<7pCKM4 z_}|2%1@CZ(#(%-P5qAjQhqzPlD~QJlehu*i!DEOg3Onh}Q`I&M(?e zt>6z-X4Hz8{CEVn>mgroyFLp9x9ih6UeAN@(1b-lEv4>@#W7Al{ik>WJ z4>MlC_$hYYLdIt>Ucz`4^Ha(={^pgvl`(z=tDkblyEFR=#+Nd_i}4`FD;a;9@dJ#v zWaq7B9RD`Az11-OCi7FvIQ=x7I;4*A3APh>Z(#gY#v2)L%g$>}H1YpDvkzw6{;fOQ z9m=@<8*<3Q8E?h>M=<^p8qyZUcn4PAXvW{Qjp03p@e0Nrj9<_EI2orug`kd#WBdMz#lUO}eGyWs9uVI{iB2VqDWgLGS(BA48 z|BU6cf$>y!-bTj%%j~U5CjRLs5Y;Jy8LwjYp^SgZcsS$sZ&ahB2*$r>_EC)2*@c4l zXvQb9{KqhUl-WBNr=Q+cd!39&GCy&Q)1M4b_6dyBPw6V2$oM>#|8&N8GVWn~H_K-} z+apHjwGGW#;d(^)-~GhWF2R4~4c`Ps#IYv!kt@pqX0 z0mkW1YO1qTGroqMw}$cmGG5F0E$qA&{y-#b@bjJ4e)UPe1T(&n?^66mw8OEKA+kblvcgHc#vSTGMK8!(+-BAH?h{ z7{7<{U5rPtimPNC9t8Jo2N;8rJQMs~>EoeYK3kPpJB~I>zCrd3{?0 z^gQQ&@hSj6cQf;}}1{>=PL8#OxCphoAEGZRw1|Px<;b598r1PVyPQ zh@H29@lSkSVBBWBE8``Mr!fDejKfc5`?fO1FJt!QjKfa?`?d?DJsG#+ zP5k#~{(~8x$#^K^zp-`qBP2^!xP&G>7~K8A7oH_`DR2jldod6X|F z<1hNW!}!nm6U=`C;}Oh0k@16!r!zi=`SCD5fbo3BpJjdu81Kz^A>)yZmoR=AfbkEReIeua zZ>ZzxOBlC*Lmhc3;}e;mGR6m^A#LT1A7l0vj1Oh`+{L()@k++G+0Nnp0OJFh|7yms zVfHnQCo=n5#@&q9F+PO(X<%Ia7iZen$oNalk2S@_|9r-S86U>{hcaHm?86zqmf1%z z{x!3YVtfbV(TtZe9>e%6%)f*28(F(J84qSWj`87)Comqv{3kL#obhzVC$oHd7$3px z^BKR6@dCzwVZ4y>jf|Ht-ks&Yl=17CeHr5;882si9pe>@Kg{?p#_hkAgu5#lr$3dY zjyk~j4a`q9;||7a7=MBBTE=f=ypHkr7;j*FG~E_|?pRG~=<%K8EqJj5`?rjBzL9;~0-)+{t(X<2N&&$oLH`pXrQW zVBEv_EzD0o<6klR0>*D;_Jxd(XS{^*M&_rK@edd;V|)SQ<%~~c{wo;2g4yq4d=j&- zWSst_h}wIA@mranYQ|48KQ)ZgpLSAvYZ;GY_H~ROV!VOzc*YwUzm0K={s14|OQ1gy ztM&#nzK-QTlyUk~O3FT*@hQxI1mo8-KT(Xo$?T&UpUQX)uUF%)W&2I~Xrz{Bf3_GR6-x zUe5TP%ufa5otgbE#_wYGm5h&L`9Hw;OlDurxQp=`#uFK@W&8}wPaWgC8E;^m{&bY` z*2wriW^YY5<9`x6Z!qJ@jE6G5iScm8Qy7n6{58g-82^^#Cz|n8W*@`&rL3MEjL&9% zoQw}<_Hm5YGy4R_|6)9m@vSUB>5QLc_8!KcXFQ+rH0Gy(@dp_%Wc+i+OBhdQyp-|h z7%yYIH>-zo#+R^sRxqBy{On?UHsh6y$1pz!7^gp#rH-m*d=B$d!+0j+wT#bYypHi| zcHRcYk1_j3#vQC4tOOJPSVFGyidnCo?|@jC+`UBIENIPiOoi#yyO0V*c|PAIW$D<6h>ckntSG zOBjEP`6*@mC&tSd&t-nf8GoDc3dV=A`rO6%2*xWJ&trZLFg~C0YQ`rqKQ)XmVD`0) z=QCc%_(H}T7{8nGM#k${{a7{B6JmU_=FK2P(Wc+@XpE$W>cmd;aj2ALq#Qc{q{vqR~jIUz6jPbLKmor|>cm?CDS$TIc{s6PDWc(9m ze}M7T%)XlOOPGBP<4-dCTEaW#-mUBgAZs3J#=d!nh-%{0cVd#5n1FZ{v55jB5OC8EyU0>B7zi{C~S_vMXj{T|r zu+cbP)mIsfQ%U^}qg$fhVstCi>x~XVz0_#D303bkIv91b(QQ!28{HQ5XrtSq9&B`b z)R9KxgCF%_Mu(sdG`b_|Gv|Hf4Mlz2=uW5)8y$wa%IMChcNpCT^%kSMqF!%wH`Ggw z#s?AVy+-2$@Ab(>cSjv>^u?%08;uVd)DJeg2kJMn|HqGWs&qJB;pwdW+Hcg>wCRqx+#=YV_r(y+%i&PB!`q)bU1NiF&lrSD_wk zbbr*5M&lQu^*}K)u_*$^OZju^>L#Ip+0Q%VANGcUxRvw(L+#gF?uNK^+pdv zz0_#@;;i0lG=33PpKSDS)bU1-Kt0-M{9>tou+i6}jx>5C>M)~6p$;_q2GnQ%_Lbj( z`nb_IqCRZ&Xw+3k--LRH(PL0=F&e+ns9$gNSkz069*5d%v=eo*(Kn-xH~JRTqm8~5 z^8Ch9<=U8v9ef=Typ+0PMGU_U$Q&8_PIu-R6qur?28=Z!FsnN4gdyU2ks6N@~4Ak*P&qh7k=sBnd z8=Z+d(&)LU!;HooUiE=SXQMvT=qtYm^>L%;p+0Q17j>1ml};XKI*+j;|-7cWTWv$M}54}ccUI{G~TGFA8hm@)R9InMjd7}-e9N?H2OZ& zXa4k+zX0`dqnDsQZ1hspRYosEy~F6`sJ9rs0`+>MSE62O^!=#4Mi-(^Ho6FPywR&r zk2bm(^h(r%LcP@JhfsTsE=8Se^uws*jeZ36XrmuRJ=o~SP)8d5IO;H?H=_x1@(HP zccNZu^sA`7M(;wMZ1iiW*y~F6YQExH&9n|ZM-iLar(fd(*jXr=n+30ss#~b|~>d{8Ok9x4t z2T?~F{Q>GQqYt4DH2Oo-XU_P_Uyb^>(I25cZ1iE&RYre|dWX@Upx$Eir>NH(eFXJV zqmQEY8eM}r+33$u#~b}Q>d{7jfqJmfU!smQ`YY67Mjt~RX!O^p&-~&me=X|cMt_6) zu+hg+R~h{+>K#UZhkA?A-=kh{^a<2Ujs5|(*XTOb$wt?sjyL*8)T50)iF&Znr%*>4 z{S)diqfes_H2P=MXBvFvZ$N$A=wDDDHu?d{93je4-r=TJu){SWFeqtBxbH2MPSGe7&vZv}upZgc?Z!$#wO zP^+&px&`VTMz=)0#b|sWw0^zOL8zA+-5Rym=wQ^zMz=v7Z**JKqm9NdM(PI}jSte- zM;hG$b(qn3`W;4hLA}Lj{11us>y7S) zda2R)A0z6$Mu($LHo80Nc%$(Fochs5;|f=V^gWvUsjgCZJW%OmJcNpCV^%kT1qF!%wKh#T&z8tmJ=qS|5M&kon_3=jI10MCG zjlK%?V59L1vHD1(2cQl!8XwH94>TGd#H&AZ%2$58;a`8;=s~Ct8$B3xmC^XcQ~eI3 zhoIhK^ib66jm9s^>z5jh4@lK}jm8HG>XVJeFTU&JjUIt|w9(h09&9xJN9OuSqw$O9 z`Y@wMp$;?}AMmR`bJACS{DPMo&S##ptQ1*BdwqwhdH z*yuY^M;d(>>M)~cq7L-w3w^ug2U=+zFCC-r7hmX`wXmt)DfD)sw+X#j=uJYe5qhQ2 z_X<5v45t}(}bQV^jM)s2|Y~cfkO8ax|h)1gboopNa*vTJ^m2-w9qGnJ|^@L zp$`eYPv|{D?-Y8w(A$LGEc7O!*9g5*=zE2pFLajBX+qBwdYaG^g&r&PD4~Z5Jy7U= zLiZB7o6sRb2MK+CLDT;ChtQ{mJ|Xlmp^pfCNa%e+?-6>Z(A$OHCiG^ZHwnE)=#@g> zEA)J!vxH6)dZy6Rgq|q$SfNJ=Jxu6~9(8GitD0Dxe zdkNi5=n$cUgg&1q+F$6?LZ1-&n9xUrJ|y%$q4x;AQ|RqNZxed6(3^x_BlJq4?-hE! z&{;yK2|ZKjX+lpFdaTf+gdQgJK%x5y-Am|hLWc+)B=q@Q(f&f87W#zH$Ams2^dX`5 z3B5P3W0IPZN5g&|`%jCG;?%2MXO!=w3p1 z6FNlbAfeCai1ruyw9qGnJ|^@Lp$`eYPv|{D?-Y8w(A$LGEc7O!*9g5*=zE2pFLajB zX+qBwdYaG^g&r&PD4~Z5Jy7U=LiZB7o6sRb2MK-NE81V^(?XvR`k2s1ggzwnKB4yr zy;JDzLT?j#v(TG_UL*8Mq3;!XzR+1hrwKh%=xIVv6nd=Cql6wN^gyBe3EfNRZbF9$ z9VGPmd7}M=J}vYKp^piDMCe08?-P2D&^v|RF7!5`Hw(Q<=ruyG6#8DF=L?-BbehmJ zg`Ot#M4`tDJxb_dLJt(WpU}O8?k04I&_P0<_lWiv`n1p|ggz$p5upzWy-(;pLhlrM zyU^Q&-YoPcq1On#Qs{eyo-cHk&}l-?6ndJ_6NMft^eCZ+2|ZBgenR&Wx|`4;LI(+b zK3lZE(5HnyA@nh!j|hE8=zT)(5qhW4+lAgH^k$(q3B5+>l|tVu^n9VSgiaHBrqI)b zo+$KKp+^ZlOz43^_Y=C8(A|U%5jsfd^I4+(g+49x389Y(eMIO(Lhtiw=jxF&?uF-s zSGS7Cx8aSsUE$H;fr7<-xgYL(L2~*q3nl7;@cJHokb1KH&5T-e6z8I zGhmfD`!r&i3Vjv)=Ge)la|`jh?Om}>Cg zEQUh8`FcMn;~u!{j}2S@QGhCF06YMxGr7O6D?AM3EQ)P(E?eAa<-P?6x5FlfgLQ8I zQMG~Dy$(<5;{#N-kS|mA@Cizdg>U6WP=uiI-}!SE<<+V@_HRCqb19E^!9$A9;;FSd zpGUBL-h=P$oxZHT0cR?QAILOWdIS}ox0Mq!?aS&2y9kiMjxWU4I*Txu2gycdd9TmJ zPnMy2>a4tQIPO%FYEbQ<&e@|$UP63%=|lFzW9#x_;rNzRy;!y@Fe5kdj103g(&|gX zKD+nzu9L&y7?oe#QxvKy^J_AO2EUv&xU*U}cqlyaC@Ql9gp;#LW!|F-FtyQt)2TXW zjn61qCvUd{Xak1$vdRE()&Q&lTdEeGFi_5mrvjS*T@nJU=n(E|1rMJ<0Vb+i!5C@K zK{L{hClNHE(4`yUfIMII;^DJ=)jI(G51wi2OHt|2!;^)dxNt#bm&M_dQ}~ddvuJld zj2)@Y;+B1*l#Xp2RJkv<1e|TeJgL0fm$n)H+^qlT~Hj#k%T^ zQ*WGd8~$&XeXYKop3oKtyGNAAeS2~2tDB^wF8U4~ERchL8ZKP8x#%5;rIRy!uuj3Z zF+L6a7@)HVN5+Tk!}sBHb5>n<$mfKj`Uyp~ScoDhPOD-1tnleh$cHa%ZouBQx>W+t z)BmszR<|00cJRM)?zr*J8}GV{kLRI#L-8yR!s7}~?5WU+UPq$mEhs|~1Q1daMD`rG zKNg<^vQGAf-O&3S!FtAmiMbj(3mkhFk-) zff_#d#n1a=@j)%C#GDu_KU~eeFup6FaV^!GHM}Zsg#M%^l-N4eJ>i^15YAoj0YT_; z_PNwJe;6wUn%r45I#};ZJVQ5=Xnb&$3#?Z;GzUp$c#QJ*k-y=%}7N%%7b}KQm zI9G2}-K%(o>T^ZPe-S*0v7)l$hDs=Hlaav#%kMovORDLmg6O-{vTGwy{f8nyJ3fTPYnfie?!aef||T=^4j7R z`S9M?YOt)4mcz1gTknF!*@ct6Xb1it)yPVCvD>PZY8zRt-J51|*(sV_aB|vT_r=%L z8coV!L637TYu^W6uoZUKz{6uOI9J2lzuIAi-nqXn?i=V_xZLcx0-x}LvC`fX^c^0) zq81LX$A@K|%XZhnXRG6Kd~_2GQFYwu=zRUayq+XscI}KAyb_OH))>%nIX)I|Y`a`P zF!yfTcD1uJ#99M*0iw^U=G}iV9#*eVJHS^K^f6dq4zyA6Ml2DW<-%c@0M%#PScU43 zP~Rt^b+iL!eKG)IL6rxycoavZB2@@q$yS78Q#CQGh4@yaX%H>^Rs>Ncl(T5}csRc3 z6`aRpjjvwe0SYI?PPKnU9K6C2*2x}_B}By=5jpp_tVX;{83Zibjj-eVFN#;7=hbmH zKp%8gz1bK9Yxb0V&f?|opx5G!xOds{8`KO^^pW%9ADl&Joo%Ynrf7q*aqeG%y&9bt zufPmuRMxeCrYVIirK1mhhWr3%64m{6hHoya#s|ACe3~1^i+yzkFrgK#n1biqjjz_d zj(=qi=TUuDy=z(R4QgFq^rrLU6L{^_yBY^>8mx2&Sf)B}lcA+6!~qL%=mSNI&y~Q1 z#h$j18EC>>h%yzsc|WRgj~V|z?$zZ#KZUopPH5p~YhT?g&MaX>|1 z1q_rh1vbDcyaD?-*4xSJU}f0=o@>CqR$t;k_BS3=rZ`(RU_{2&Viwc@)~K)7U=N!y z)x=e__!LaC37kz;GgL^?}+6jr(S8u)Z*9r#({9-%)dX z*FP|CMKJ5NI)$H_oN#rI&^-}QBYLSb1v-(l2qwfz55+q=-hq$8HB@a0QAtJd4rP|!@eIT%SzBi``4VWTedJx znPdOx1V=AaG87sE$2;{__m3L6?CapW_s8O++}6o!FNj6VKvUysm@p!`5E7 zwt;dM<<%`)e9F3yx`z`Ax@%I?Y63@9=ps=2X=9feasj7SncnBX=7Y>ntt*NP$4^Z< zDvlQ5*rgp~h2lMmI4$cRhSK9b3XEo0JK#kjEx`AvZrJs5G*n^y=|o?XM1Y5VB%xm3 z()UbWMq-y*yKJFd?yoCQi<_?N&_sFrP#=y9IbYY^Z$TSD4Y%5%cd~L6x7w^379b2v z){=zNkI|=pys5z&V{n-^cydA@{rwC${!jP|S~{;F&cYt(q3FA*SIFt8ie3bAD;li*WXaU9(Ggf}N%?v&x>&LKGTCSOi2$XC0 z>KWB-qY^+^^4vIRjGSBTaL#MH*Mg~|E~!TKtK0RC;;ALRpoP(;1V@*WJy;*$eCOvX zCdd$!s72JYEi3 zZ=?Gy&_SEp(9OdeP#k7%Rp{A9!1M(9lM~^0A@w$tk{PJtp z5wnu@%yKDW3Ka1N6anASxWiPdP86l%^N`Q-?N@?XNlA{9ribQm>%Zn;cuVy&##5MyR(-w+f##Y5dfdf^&BB@jhGBQD#N`bS}!sKj9CR?Hu zs;ws^n%U=t5148dqe~~^3s5q)gnt9q4YZcGKv4p*&Yo4YC7sWy8Mpx*Q62wtF?bqi zdoC~*SxM0hj}&x@Cdw?Y@=wups-KR}MePVKV33Np;SrW4zJUbcUpoG{d5Wa!35UiK zMr%~-auCQ%2wZH5KwsAv#Ghb@U-~v!a}Bui47kEkx1KN_J1r$)s^!!4&@+Z65#>ipw)$b|_`RT3nK|D) zwO=FslSvS=BUl8((To(dia&_LjB_Azj~$u8`DTs_!x{g zK=#iM;<%69zHjG=_M}jeL!c^NHv}H91=XTejQ}mrf}NrrK5`MxXFAa%CQL-nlw{hn zUV&B}f^swSmNSzSj3MMECo}LiVp14$i{R?fsxw3ux}}N?N(P53rfjF+iZ^_tmovjb ziTB1R%{kL_Gx0eS{x7E<;@q50RYLHbA%*i>5HY~hM(sdvtwj^Vn_|_Q0yF#Sgs2eS zin>DmlHpBK0JA??<>m0|8BV zo=CxRhsxo(R8E4&p;W@#+f+b@zhhL`n*NMnKqI@QnGx^=L&d?nArEoLv*R6xk!PgC zogNxHg+}}(jcr~UN54i+Zi!WIaX7gY-iOi%)@~`F06Gng9yW5#%Nt<5D6!;T2}3?p zhaaz(!o@Exv%HXwFT^X7m5dV>{b~&R6*@9YCgUv0KuYW*%swTOsV*7Q1uaWyadj}* z{6*x_#v-hdM`pbf=wP9DBZFU#j9iNup-tA@0i7Wf$g~6FtarEKIWl;y`y5|gRWwj? zV^(3Lpe+(BgvG*7BYrgc3YSRfVl38~G`x-x2cxpSO7WGpMm2NvYP2iffZW&;{te9B z&1vj~>+Df!HB41g{0Y8K$Dig8{86o;vAiU z1)W7slwvM$y#kvU82ks8O$wz-qCKMJWS?7z8>m;SCsyI@D94Vrdegcnhk0OuQIDhNG}>1Y^K%OYkb2ZFJtotnThwh3(V_9S|Y5+8Y2VcBOwcUWsr2LJ{ zYnl@z3>;eK24-R&Lelcn0t}mAj4~5VX^c`1^iK8^NGYdH(dxD4gPMUf-Z=9Bw}dlk za@q>~cMw0j2C0Cn(KRtL30Q%iA~z`3wNJ-mUHjGeo4pB&V;mN#JHduP<{)bpIzVDY zqGfsKzRRtWf)$}fs|T;ZiVnkVI#?!N#*VC5xKl!)kx}8csV~=g0$7Z&W@%w0g+&Jr zCJZ~2p@Pt&@CUKBP;K}Fd1@}#CkxJEZP-Gd6>F}+6KZVJn#XZrW+!_$$aL__budPs zG5U0SQ^SZzqLaf^VofCRStK#8F_JhNbDGKqAbmZw2)2ib_ zi#qZ93V!+KW&Dzem+*_l-EebgQ7eAZNb-kz{qlsi!9^pFY*0cl2qaPaS>A=!)Z#;}#y53_qUWu88KxIi+e6RkjX; zM}rLy=V5!zg{`vdVe~np&vnCqV0L*Hv$dz4NH+uVFgT&sQfgNs3|3S&BfbNt2W&}( z!Isy#pmr-@AfXltC)R}Lte8_M?PazbKu=U|SQdd$t$k>7&87>p90IS(Svg@ymBNR) zF`;tob>!0q6Eshk57JqQlq$7BfuYRvJi_x_Za=$90J`9xVEdCqMS;G&$d28&-$YMdDACwGz}VFmXzYHTj+CdOB_?)151R2O5QPCz!6bIS01^8I zPV62}jNPN|wDlo74=KtZ2BTSPk;TYg8p>totXTFj<(IZAoy~-X$+P;{D(e z74J2WIA5o&y+M^%ygpoJHA_X%2fVSafPEHl>uGu*;Vm$tc0E0)GnJN|JPe>rjuQYn zE%z_YqBYNo0Al+z!09mNA++__1|R|WRm#(yrB+!WxDGQ=2Jw?8V!{EtF>}7zXKrx`P9aek<3tmWP)lia29Kf55>aG!BYXq^VUiU+UWOI~i zjO7;#nqVcO8)j8+D1f(rHKUtL9#+ZThY?a&N?yQF*A$#P4BI9#exWie8PJ$&YWOwC zMSUHMJ(gzX$fn>qgeEB4_AcMj23@x=*zkCnmkqyVDp91G11`Ztkw2;6-oVh*lc3T- zAj0623T}^VPa9@!Y$Uf6OCk_*mQ{y?&D?+;lI7hym{~E8!Q8EOKJP?|IO_x#;dMHG z77OB^tXwcFSzS7VYQlu-;5p0j)CIEM`$dg0)k z{X@>%F5;NI41gI(vU|!JsH{gsJaIvHo14R{uEkGVpz12Bh91Dc7^7QJkK^JzHAXie z?mMHeKVxQeA72J`r}c3&u(g`oFJUvpJO2}iQcqffb5MSt|44hZtOWA4PKViJN2TU1 zW{wj^7`qH_kn4DN9*@rJ=y{s@-Q2MqIXqLlzlS^KpL?hi$i4$HKLji7dCd?SZ%yOY zM9hS|eMB~l>rU}Rya>9Jj#~h6^qyJCdS%eGTe=khswCC~ z)08Z|FGDR*C;@{xl!rvcpmcl-F!NtJz7bEPs=X0^3<&+&WIf+t+l|>Oz;#HL>IMX1 zr3&4>c4ce{VFNRMm6SrcO_(E1NY)dq>t!)7{pEv33a%L#fVD+Z7|oFxEU9I1N7`Cm zG*TKCnmt4sDXSFn#8n=ST@K_RH36(Cp9z?>oFjFPE%#USyj98ujq+)TlSx zgLM0N_|G?5AH0fsZ+hTrO`AgRnfx&0v{ef8h(pS)xL(jG*;{%X|j<6#J zb4-hq^{hLBeHo(@@BxPJqV-EHRvJWLb-R$%;a^(TulbajV7MdmCj_dF^Q4pYve@j= zJ8{ptfruoej+o&0sQ@uey&Yqf&=4K6Yzk_(mcfRaGLd9GU)jiY!{ZZANe*9V`{+qX z6&OByM$lNya(TdP(bEJB{%Wvy&^?nWmI(fAs5gHkQp;*dH0N&6 z*L77CMhS(c(z+j=F(%EjMW3%SGB z70(c(H$IKw*BGaRBrNBR3Y{z+oQX7|frZvJiodw9(SMZ0 z5xjPwXk>WH^hc$C`v!e(P2>{Pj9);DPiIMS#@Rh0Oo>ka1}f}2>9tHHilo#&oR6ff z;jk*~?ID=5ckWiRdR3!u$aTUp7?Gj>z(@b0{5*1-JLQn5I8T1H8^Fh49~dQF6_F$M zC+`pre3+kORT5qlj(6Cc8&0M$LTtx+u;zviis~@eQN=5S%jX_Y>1#ZsQQ?i#Ul9KI zd>3yWh$6Pw^_;%#dgg;EsAmx34l%0$hhM7q)p6*VHs4K5OV{e;OTQ+a%riEIAX3&lYH#JJ)na zR;qaZJnEI~Y(HMg+gsXC>%QC-Zn>R(<@S^qSf-!b(9qm+C>f%){??XqMhJ;;e|>)! zTZIfqP+ZR9qJsng<4Y>IgTSP9FufjwQsyM!+zifs{Wv>4ir{%UG`lvuxu$w^Kn{*c z=5(R33L2|G&o5+w;QRY&2Sl;QpuIj>um__Tbf7;L%w)vv@jJBxmj8d4+Q9e+G9^HV zX>VhpT0?8{AIzl3hltGt5!g#AE8Xmo*x`!qIZUWw0`>nA${}e_Sl8@0W_D9~X@Sma zjz>~vx`i2 zxGD%sBB=<5IkxjeJonok+PA5;hw8$`2B=6v3JwL*uWo^E`6ab2oH@vBreF=!*ZMMB zKs44U1@?hfdq2kjsa4`QSWv;zHamc&o&92RCWc@$vN|x2ZJoN>x5|XR*%TJ_fkp{q z@GFd|+Lu_6NyadNMRwjZuJa{K9ndW%6ck!J#|u-D4jZVeSiv! zlC0N6x7Zsfb5dm92$@kKk8}uC+|4XhG36tw6L0XpuZuuCwL5qqwL5savgvCqty&&_ zG~0+c$_ZWE3@hamUa1IAD5nu15om>L0PxH%$-asQT|n2c>S_Wor-fY)(i&i3-D;?#9Q&AoflHW`yw`yb0Dp*E;b`q z2#|=fd4zxmuZWDQ=lW`BHZP~Q%chE_{@NLI-he5_aQx!l+DH_6=jy-Jwl71dpJeLV*k6Y(?{volFPPVo2q9Dl%3*MT92Uz z92cDS`hNV9Z_KE}&h9;#{_JCU^vzM<4Ai8uLsZ}RZ|JTZmOuzKF_1Y=J1DhV%-Dw< zO#py7g8*>WmkK_Ot=!NC9hEnrN=2Er7CZ!VtDru+I`t;RCj{Kr8T^*ate1m=R*WKT zK!YA2TMF`8rIJH=k zenK*lJee-lB+$BkC#gxEt4yt-qCR7Vkh7L&g7Vs}nq#(957W{n=v@-X#L1D+6^&L3 zlEl-D#tav4Oy>CCn@nSgq&OJZ7fnV}J`J7a~_^8iH*yDl-&X0St{bFWivEcnjvREJ$k@A+T zs!+0pbx9N8U;jiZWH%Of#Tu1cVJFN}c7;{h6&A^WCR+e}#^cW@>|<#u$2PiF8?q?F z@VlWl{6$lEGt90W_eakb`*KYl0zP{<3$IH6m#?aH6$grQHvpkeGy(8N(t)a}(F>a} zHZp^^($I?GJaHD(Cz!-WrT4A2d zc*n)7Pp_=R?No0>mbaJQm1rK^qN8`RUiV~i$SOeIM*Jq_FQ@#)$AJE(o<-OvMlj&Q zZc+zAlH4ZcdKsBZb!^%$YPMV9wueN$y_KrCqo1HV#4V7Np)NHBG%I4lrXpJtDJgXR z>d>M)ip4bnIeiwQd~LtNm<)qh9$=Bcb#pP0l1G8-_R?)z{z`AqN)JX4o`T10J)a9R z<&nN;;sam06J0%!nPhz^`Uy?p9YUA|6ucZ-v`ZwkbakWv|FwjkMTod@AP=Qski^Dx zY9cJ6p7+Kix6gA4s);ML(>Y(HA;HR@+3zKO-fIs)mq&&>r_RkkOtxY+NlzZXSf3^^ z#zW)to3q00{P?ITl7+)9ECUK#jw;3qc3VN0yDa#f46scgO1P}v2Ers1;;`Yioe2)$D+uopr5L=RNCFtpbc zfHXUxCuE>zOl3xURZh8H+bCBh<+$+eudnwu%3UGldghcnYa8W+@OFND&tG5RHp)$s z`s4(&^c$NmJ4FY0*^tAR$t;&S*I!xxZ4~M+g@(9=^!f;J8b&3c-Nsw1oa5(?Ea^kX z!sYi(*7ec~+b*zInUkTAo>+++eydgj=F9?T0`2$W4^$uCHTs9Hg7*r|smaYPt-2x$ zu6Gr;V_OLv7PkWpgOf<`NDH-2FjPM3m%Xv#i1nxxx%)~ z{V$!uKu^*T4f(=nkSDIssyo@nRm#GJ(*K|#s|worO-8^mdUI6&=pI=xXMt4<3)=bN zR~zW8P<)O_A~K24N8qR{qS3tNvNEp_WLcU0^JT*Bq1wEVc+-MFCH`dg^#V{Q*a&L& zDg`h(ICl}>Lqxoa-iBNZMGk0-4)*fj}cx)FM*ng-Kf>|Wd3F25_# zv@t%}A$6hPNNgRy%>z!dB<6-X@ET4-P4&t^6$cu)C&Kv_!};D(+(hBamBLvwKu$j} zx<)bLf?O=)pp3WinV%!0)3Yc;qGhR@WA9?6jRnbi7Sz+r z{Cq0-XF_Fr^`+3~h*{k(Dfp?U_WD@7k>%J}psm*+khJ&L^<17MR*1@kc%G5>8Wqyb zZb1DdhWCg%#BgoJ$*tPOr8s^J`V0aorfP`Q8~S;E9tvmcZV{x_Y3;|j9#`Apj4cYl zeQl&^%yM5t^^LjqwmA`92|+ht(|=y83zSgtv=w6I2}qcJAQ$BlKLooggG`&V+iLRQpeyG$#EprGzX-3TUD*KQerMC4WdIbOxdKo`D=$d8VZ_(Jcjca zX|8t(-X5{Ptp>e{PC^Z$Bu0f>rtJ=P%R`a!0Ii^PYnfJv`r9vuizrR&TG! zB3UYk?KrPnch5v3+XDgUp)j z5l07k5VxlKCOq-mpn$3c^gL|!(lGL0pw1FTMqj13fwZOp@#hwfygKrSY* z!F@>fwsYIA-^F>fg9q0;Io=waBCT$bRuqAnZq5A6F4B7a5zb@uAp5cH`u&{8=&t!l zwU>KxPug~}v-x@zWA2W}Mehtc_keWC6%pCX#3R%)(Mek$sR``_i}62UMZ9Y;Ea9F3 z&Lq$8KtA3Tf4E(b0Bvt(y7X=XW-^q|+s`$Vt!&kU3c`l-T=EeXx*BxHJ zhcPecp1|FNuEA+8Kt_c(O@C9WL-{MkdTnwY45wYBGg)55MW(%kXeLnNXzgTN8|7YA zY9aw;7ljR2NI)zQ=aVd@bwzj0vO7nKuNdqQ#8r|l zu9G1yTB|%A6H~nZU1_}qv(>G%CUw`W{7Q)J_TO6xGZ%I(3|OOMyMF76Y6oo-ZW&NZ za9!HmA4A7Ps$5R6`I%`ue)eYPG|o`-p*dM z480&=-Fp-4t8Q@dtkBzbf7vv`Tx-L`82G2=Vs|S4@yXtg!)MudCxhQWI$Rv!5@X;? zWCbTm6P>l;jmstx_g*$`0O1zNjkUTX!LRAEZocda!f(9MrI({NR=@jV=*X#prfk{8 zEV0;A0wjUFd{qeiM8e}lBx>$>+^|*&E_j^jK**uqqf%4h9Ee$S!| z3XpyN8f#gt&UMx!P_mVTyf+8!NYKVmH6S?dUqJpJR0ZimitgPbQ$YBFV68V0br|4s zbx+m!rkLOcv&ls1GKGBh!IMV5qz9wr26>DPYU&3?#But5x*bPYh-N-diV15#_-R5>BMm zbU>QLel%?xV>vlRRmYyd7bZ&uVgzNm`nW zm}D3FEYuE`gV#*{_#@*KF=h7qi?S@$(fR@s}Uyn%#E#R(&x7a zct@ru3wd_$c&6YPT_VY|4_UUbmR7Z)tcA%i*P(h>t@fmPRWTTAzw1-A$W38E$lS?% z9|<(uPt1_PX}PQUx;g}gLl7jn3QN&?+dFH#fR{))bqt&Ff+sa{<})Uh;rDRFl#Ca( z(SbZ!sJRmJz7kpnUp;1*D6BJ2IflAb;@Il)C1{fq91&CuygZ(2&+iNb9d?irigWZ=LUf{*KQcqSiL=ZA{ra8#;6HcCPS*iAIxS3(2vAVX4GTYEJ+WbM0{p?`1R-=XGKGCHfj$oco#uoyYJUR8Lu=pBkNzO}I8!!44~|eA21V#)D}LqRc>(*g zQE@9d;?{Xo|4{sXg$HGT*YT-UJRJ$^;I=6)z&d;>b}(K=j1(%$9Yb@EH8NRVNLzKv z(>7y^0U~m0r^BGq+j&Pvdi!55(z8$}Ty+U0X`S33)<*0T#X4(EmHI4PO2G3{F1^p? zP33}@(H_1;iA`wzkzx?cJ9w~-aci^@xy->kmuJEAF?M15RqiX= z(g~sXP@{S20OxPH#oFh&*(`EUloPWoWtJhsZtK~4FQPz!ZJ%((IDtiMA*JSI8?C?l1FrpW_Z2xYEOd(=sdl71GIVRH-7!%-5pHM-|2~j8#cc|{ zIEC$qzc0uPwWcK4#v=D!7i-o$T%65sw-9)9zpE15Z9vivarwNv)3T^bny|!$`5f%l z)}I2Hn(E&NsyMd5da7p|Zg5QgVraImjU+3f&SOe4gA`JIz;MH2e&Wah-;++Yfh1ge zhpSEY5tU=l<PL?SdBe*zvg-O}w?=UAFDRCa<7$XMr;T>m_(PpRr3Rs`^8CYs@;ZOvE zO7*E1ICp#SodiA21!djS>>1Sf}leCv3>!&JFoOh8j|}*ei5$0k*g}xuWun2-?jzUe9lY+^=LtOK3J(15Oy|JkU6fVIu_s;s_{m*g3YrbxIxTUrYstY zRnG}TX_MzC!gDe^n3}LpYrb&=(^er20i-y8YKp-4P9W?~GCW83I1)K}ReP2ASq`rz zh2k3X_VMaO(`E+vaWD^GTL>QU%Yr~=2RyuUCYWTtlAAmg6v2m<14j1%0`m$nEY?_P zM|+`Lmj}~7fj}_bDVXrJoCHr0U7*FWk3uo@CWa<)dmL)748<{^qI%j{#9ybO!6?jR zLCfTH;0CvomrGC70S=%Wr)GincR`Ka(C&6VbkMU=zru5*yc++7HIzne;myy zM?kUGA5iR}&P5AwwV?Mb!0!Tz|Ay$k5ZVF?Z2{YG8tYK`FHjNLZ$?V(oJ2}vhcF52 zVRut0UChjGyJ<|PE9^t00jQ++PnY43q~Uv&?8&B`}%hH3e5xN%CstmZKS{s_Z z-B!26uUW#czz0c?N~o^#zjf`pZOOT^B#roaY_hAtLkDNQ1LwlQRwRck6 zOSS_wTA1o{BeryS52Fm`EXQDal|eb41Dyvgo&Y7|X%go~ELdtlQpx7}mF&Jwyx={! zvdILVtl1Fw&6Uh|ROe$RJ*v}8;{V3XZdE7Z49MaFLrS7Lqp49+A-*54YJ^w#95WvKxjxmI8=8HvM|I9%3BT%0sKN*SR3S$C--_z!n|-ruI@{h}Z}fq8awL5nRII_} zULk|xbytut&OCDv?Pr1$a#vx*LzHIUeKDI2*HWdqtkN&d2^6^TueO3i5@MYPKQ(&U zW#(8Ml)<}Y%U+B_DH$N!FO%v!k?tfvPf*>H=RX3YKR#IG25Du22QVRX%|+ReWq{1P z_TZh78y}CcsaEj7ikRc1PjirFP)QE|aaPhn+Rm1-8(>4jt+r>AwGi>x<=%w|jba{; zCVKAb3;h_bW1?~k?>$-GRtmerruS;`ME@8dWai?x4qvox_CNMKHnLeRYFcjXk_YPI z#_}?7hAC3pJT%3~}oE`EtSRP(m z{QBn8-h23-m1tsfWb;Rn6|wO2fXtuIn!%l{p(uU zswF3^GrQAfzwr^j_}XiQEK}hG^$MJv#(GszpF8L96!n?QWqL&a1=0Lq{i!ls&|cqM-_rLpiz4*U&~#jmc?e~vnDhhEkYnN{5oc=_&8*Zd{M za{>p$iEO4+VwbNhfQ*x{!~Sh&;by)faP%D@#%m1eGNzy#rw|R2ThPTYTmnhf;T=~C zog){)OR`m)3s6{mFB-=`!3$@r=EymEAa{(@^c*uIVgY_DqP@@yeNq;5w>6`tv4Q6-N3-Q44nWUCxwuEdgWh)eH=N80Wbz?>Wiy6^_M6-~w!U=ts62I) zdFs%E2YNmsZymK+b==N6_D3B#q`y?-lFri#XpS7Uz=aCI7xC`ubL<>8^v@1-QJ*KA z=e|+`jV6NpjsE5&f1`VlpkG5NZS1V?Y}R+Oox}Qm{$1*rpH;_ip)Xv0?}n^tSw${I z5l0)ao6Q!|-R;tA9rFfJt zcNaI~Rju!nr>Wqt$9Z)8Lp0J`h5g+key?7?tHOI~GH4F&sga-h2Kh-X#80-dO2!o? z-bR>YTtVZlNHxXZz+d#o)%;QOd?cLT+V~p6q7!~>KDy(?*D_#sI=+_h_y>@{Mu2cc zbU>N`QnQ2@0#)NsA?pPzz~EybdZ9uw8`q|p(*Omd53>7(7@F|0GS2s27 z&bQ8ro^Mi&uQ2E0=qZL`Vp($m*#m>G-?ryX27698>~gwniW+z7`*FtvH;&ZlZ~OK- z%k8?tsIS6F`6@j8yHr@Olj5!`oaC$Ulk@Ym@W`@=GdkivLi1ld||0d2Y`Mhn~3Sga~Raw3TBARgUcTwRhgmkuADvD6x`?0l(ynM@9#gyL(#cQs`9pG!H%E$VYJ_`+&(njd}Q8cgtMNy7Z=`@t>t zY$p-#5PL(8vqGk5PYyG4Q%6#Bf97xPq0*>4l9KtKDF#GGo|i{b$>9D%P`yx_tNXkc z!IfKdgh|=`v?_Xlw)v0eu(8E|d4sg|$X0;NPaG`x?kDYPWM1tZK^l3Sq(stVU}3Fs zWrWmO&_3rY3`jLgWU#0j?kHl~x?FgiWo66q*&w?$NZ%&ijn8F zf=@D$=M&2>frp+cz^sjJ?8=EHgBamRJTqQ?>LEp>Qt(c;j!no>tFeg`W;VR=tTZ$@ zToW2Rt}ZmVa(-y=*$YF1FKi4AzPu$gINBB(T;1UrqUEB09;_`xSu9cD{^Y~)RK_|} zVN9%K84)b6KrT|{{7D9@UelJOQY;5%3U#UBtH!WV*l#&OW(9)XJ2BV@mUPp&QmN$s zrg2yo`c{o|nk2*|cHwyW~5Zm^z7a>Cls}tmi;iqHZPrDY&ZT? z8#m||`NdY$edB(>VteXnZP`huFScnTwQ<{Z(YOqBwVTHMfW`K^5!$lBC*>Dg-|k!X!w}o^jrqm4 z;s|Zr*m3zAcQ|_C|C?g_*H5%%Q^)3S*)O4}-L&k7A+{jaxh3|QHQnxO8dv}G{Ee%I zu6EP7A8>Cwdbo=1&nM<@*@IBjZd&%k5Zg&h@{8@f!?kh$I3a)InxLzm#(BOFnBkUA z-uH#;zTngBjS-%arErJ+rE%WVVL-6OmPeI3u$<)C<6&Rn)PS>?3q66Luyg4m%HU<% zDgqUZ@NpSKuUq_Y-h!iBjHg4<{WSeIuYiA%x0wKy(bgE_vcVU2qKuhW$DU+U})ZdB`7U;`>0^h#k z>)pJKo1(ApH#Oj-TR(touOQZ;pbvZ3xI=XBuSOM^ApI5?$VlRETA77xD85$KU$LF$ zV5=GlY-<(7+JG667JAiN=${xSLE#6_kwRH`<#oq>k+sH`l_lg^8_T#m93R`A0qgo1b>qCM1af=$rSOtcbvSC z_r4cj!H?FK^z*i4e{D%m)QPQwT>A*tU_&z0O1~tFWhi&W^*6$+xKdBKtX3CSIoYbN zpnr$Rdq2x(;u6tK32r+Jjum$4%1=3-`8l;sfvO#3Pju!OK#VbhNsjB}$$-@G$=*6Q z9Lweg&jvidGs*>|Q}ArQ8SJVYG!8ND>Q1NPHJ%dOfo&>21dZBDb zht(BpL6#K5#ynYL*$&lUfa143=M7O#Eku@np6W(U)qR*s#Vqjl0GftWae4&Hh-SA_ zQ?Z4}zKmhl(9-Z{LZ5tp{HuuGz#tc4wV*f;+hPE%4S!Zs{aGOT2C_OOJ|I0ru%A8D z!JahO3FV_m)W$CRetABEfi~KK>keSgfxJp;t22*K_TP_gs%m}b z)66lS*T#iK!K3saEm66iSM4q<2S=>!pr#So2xqGV?|Tt%0_wq|1a>|ic~*Ztz7H(AlP>3C9aw=b zpx?UUV^jHF0X5u zi-Q?^$tROT@d>(bg1JIfQUI{=yiAw&HJPX=Yl^o32J{(#3IIqJHYR+5&ry3fCLBwV znzxDgeBzGJ!{5@T_+9#QxBlG2pGc~n%e*3%=K|b9ky!UxH>i`)3YIyQj{GW|3=w5Xmm znzu0l<-Q-HCtX#>hy?n|fC|{tEK;oPee6`0IEg5exZCBEY43zD7yriFxxA z;8sBZd|Xq|v1c3v!-ZOyJ+%Qy8}J}V_jgDoA9F}0oI@%V(I$HE3hX2uDR`zn@8F;i z3=Yl1v?9^SwRqNNN@IIpq!fRGSB{t6q0QV^{1RmZAka)vamyr+RINSKQ3rNq>u}Ch zRGNf@tj*|<;e^3Z=cRMxicq``B^~IrRf_KF+p-16rw=*ZNFwnsGuQ+D=}&W^OVQ;7 z+F?!kAe`e6K@!Q-WgY}i=0Sk!9OWP3z^Z>uN!c&UM^Jdnj>mRJIUViWd|L~|z5%4v zH+a%qhuiGCDX=*abz;<$Gv2fj$@Tc9Bc=%h*N! z61T__1#gQf)d%PRACl#Rz_xEohU`Mee$k^(F9=NA(b-j;*`HfR2O$$5y;|;MN5l?5 zpf!;n+gp$27qv>S!wkEgvudlhLN4B;G2^}pWOXLwh5hY9NTC-jw|6}8vA)b^eL`=2 z3C8|N8%%z+;dC3SP7TGse)^y(2T{qgaSGnyVzhq5RNc`mu?c1iu;R3Y6hfHUW)r*gZKRc zWBxsj;`A_`Vmgd3%{1a;6!=EO;(j*H0}ReJ93QZ{8xN zP4nwQ+|H?s>rN z9m(x*61W*!R1^3I&H;23@b3J3AbIFd$sbfJWCEQGCLUuF8XMfoC-J=oiWbvML=S+1 zjXany=y4q?PigBHqCfPwzIxm)RPG>JBv0b7aWmXHf=CT}YYn_(D|nj&zJum=-v&%3 zet}XG3~KDNBa*QWk`<5IbX+9W$yPi>(}HK3B$$4M2r~FH=ID`km{(7KP6ju5c%x3< zW9+HP;iWY~ts<$qLbd!LN8YT!8*f|f6H+<#`YKA- z*kpJ&jGMcaoO^Y7peIj5aUVG5r_SxA0bZ-S))$FFEXZ6?YzM*YS>DNTZgEjkDaI}I z=S?^qB76i7gUZkVKRPpQ0N#mN?Gg&?HkU1d<-DKo5p+sPssV&6CqQZR zAf_V8I_vK|4vhvjyOPA+ABf9gK4JnE@(pb*%|<>es^h7|%nB0G4OEbX{Sm9Qbs5Y+ zta?L0E(*kL$TcPCuKcH;-^s&N+Gx%X+7fkpiDm_BsrlmbQi%4P?yN+G=#YZ#p5Sp`D^gyh5OwYfz=;X?G9a;KvO{ z{}p{u=lvh+yKxCvi@zeebBMIaH0M){;hC$ltF1a0l^p1+a`)^i3v;TR>{K~DtIFmB z$plm7m5_>l3MbsmzS$Oxs_`+CKoEe$K3%SkI)FwaWgWY7c+@3gn@uS`y7Gtp~+uB z>5;N{L?^D14lEz;SrNK}DsR=+u~zfi?xRq6w!~XfUTGk%bQs080oTOy%V7AbN9b1U zNjH0;Z!bfWhtfm{dXTRDm(|zNs3~gg)$%6y`nR-+9!sW!BFhUly> zJJ}+-B1=SM7?ECfSQjFC4~>Dq{37B>c!u!O-(N^Kswn-4{-a{L?%*6TUFwKw<01c3 zF)fC9%@R{=n__}X)M$%pdX}g}`5~(1+G(JFS-oilY0egv`Sc0D#wXgjm2uwh)vdVF z0Q7|6x^!Bv439oIM(CyZ_3 zP0A7;W=PV{db0cHGle%CluvjKV6-rNESxb7`;Fe(@_i-9Q>Bn#*GT`PV*GM&ju_8% z#CREG+=Up?1`w^Hp>!XK?$vK+DgbwxM zzuP%!>jS8CcI31)5EFa_igr|-O_+X<()KV~EJ24Vl0D2z_G3_538%H!hy$WDB+CmS zq6jHS1&E#2Q!Sb*)>Nye_SICIrUq)tLMk0U3V(T636bXtJknKB zuAO`!*&H9wGU<3Ze();LeheVe@ey{il|@s*F@023|E7g5!t0~}MUqdyIE5&Zsfhg4 z>rb2@=nq=gdlD#+JS=YDennhGs}Sb6^Dy4=YL~G#NG)*fG)HdDDz%l)&Q;wx)5Xl* z*Lx6eK!hIH$k;Vi!iJQ2!=NleI&_K693?CY&EC~9o5K$f&YUOhiObJW1P~|Q~G>Ue^Q5y zSi!yS)f-AMrePH$c%sN?#nKB@WLxi%3qh=#I9R5F9ZY7KipSAVw|;vs7lz?zBZlJ! z49DH?={kyx3KoCHQ8H-8U0CTl@CC)}6hg$+AfP=AW^L-TZHQYx6hk*H!bc-~YeU{Qh_RZwma<-R&0dVp{xZ zX;&?-g(|o<;y)+w*4zI#TRgMGZt(%VRK|fWTl^bH-_v5-SM+R$z~@_F^I-MpL#E5= zc-ha+?g`|N@Z^_!o;e)b@Z;_0ba{pQh^s6RF7m~RN@eXY#{0r~k2@x=xIEI#QzaaP z``bAN=_~j**w1UH@!VI&CkDCYBQbpaJD39hiiBq^2k6JczvM_t#~ulkc;0sO)8#^U zcIgVxn0>tzu9c$C0W>hg<%5VOE)E{&zl`68TidbkDzku<#{r^)$7Bg1B&%ii=mpw2px2PR06?7)PJw*}fopjNi zZA^@pWPYU=)nStp@2umV=(IHj7&9T*;C0)nf}ZPCF{TiJ;9kXe#UfXMBF*Y0ubGk} zHbj&Wdk@8*fX5;Bn}PSV)sOCj3IHhl(}e~5__W=x0`di;vrx1XvMV8~mpCEOw8-)~ zH(kc}kGkm*OyA|E%b8BtX*}~10>OpntB~)RhHv`Y(aIrFwqB+} zk3cOjd*a$U$t?6=pcO*-bR#-|x2JbiC%>`>%-%W=)jE08w$w=h z;Oa9?=>8peTbj)5+d!3)?~@VOL&PKU#$#-J?3cARsaOW*^p8X_q=+>OQ+q$ZfVNsc zg4Rh!m+tEb%2VMxz6CK~ZIN;%xMGAMyi9$9^S#v`nIk5tR!X4Kw?v}B<8C#!yU3t| z?9$dg=%aZ^)}^-t2$?MJ2|@Oe#{f!rq=c&QXxl~}Un?VP#o zvhyGX%YxmHB;ti_WRLy;`=mXQOx0H)SNQwfCRvS_ZCwhLtS8DuQ92#~kO=hhq&#zu zD<%28?_``{*qaNZlXwl7OZG*ncu$mxE#cq5%ps;;tk|Zli_!f|I$hpVEu~P^emf?t zNhw&M)!^0)lt&ogt-e$Q(fz;eZl=DW_?25(g%IbjV*4(uV9?xd1GY~QJ!V;2O(I^z z+LHQ{h?i(een9tfI6??#2pbb)O7g>{iu<^vzAYv?UYZZ9WCCjj&A|dz51^BZ5G+W< z2WbiU0nE>QH4o~l=08hhMwoP=)?7wBso(<|ve8w@6ZO>yeRY%f)i8Zkj#tTgvK2M4 zxrvGj^Mv**;T5IYDYxwAWeSu(E_H(FUvubk*j0u%QYGG8>wAN~7iW#^FX#B)pm(aa znz7d;n=ruHZ&2ovy-^mnh+7FoHmTyLLyooxeF%K8g4h!N1bBMU3|@1yNzc&qF`DLdW0+KEX3$&FQIL1IH!p)c z71VN=@y|m0d{r4qypJAUo~Xul*C^BjPJ(ZQVo*V<<0=sE_9%x-~Wh21nUggxEB3bx){?x zKp*0b*D=g@tk$a??*%kw8Sz_pNv8>(Dy1=zmtFgZL#S}<=>7roPiz8KMp81%N2Rmr zttE?Jk(LAIZamlrCT?LSbSn5q$prLD_A*-dEpMU~?>&#| z4;KmKd4xou89zEE*HC`C)jA!oAp&Nk^`=* zkFDl0EytsT1ZBh0LxjGx^*%K?5x)q4P}E0diXETARI*+&lbTY#{EQk4lRYq!l171R zvson7CoU!3%?9_8gUOWP3mJeS9r82$DuFeov`PTu5xingOA$u*uShTYd^f2v$|z|$ zi;Lws(~IG$Qe>y&*W#^Va)o)6UFrriKCr;zsNmnkLU-q`-S7mR_v7Bvi~Drq#_i=S zS`a5*@MXLpvhT@V%!_r!Ag~u)7y?K_3&fTPO`-VJP;%lU zhY1dipTm?nZ-D>(ev%dvkX!`ylQjeMVc*J1bzk35XHOS&dNKkAp)(USCllpV?NP(3 zFvRHNAyx155yCw}0ua(A#*z~d{SKnvnIEx2Kw)f>*W)l;d2Bt-^?@rq*N2wm_C&oL zw|vB6&Um3ctFcGNOq^HlM6(%+KfpK1U~$YfZoTj<#w{S3X#NoZPQ*8oTj+fF$?1GJ ze>fW$3X}B;rBX``zg%iGI@rOn7T5d%f$AV0JUV!l*gx|cwN6Bz5vJR-|191YKqx+5 zlqxTH4{|Oq^mb(IYflvy3sJ()YRDO?d1+VeLT3Utl-aO@?K0``GCAo$)q0is8EnSGfA@#Z}Qm@-n*xnVXU&-Jqmq?3`_7PM%udd&=vyVn+rWm|v z7L^BV#567Vph>u2o_$XG78D(Pc(suHt{NbUpX4b6dN{iY#YRg$!bsZwqNt^o842Fy zmg(UwvxsGG^OPw@ohY-Pzn+h__jppXQ6_Vq0D!QEkjgEP_7)fooS9*MjL&%iN~NK} zyJnIdz&W2*14IQpl7)r9ILy;o;MJ|wpoa%uOR<@d12fit*_|=o0aZIrQ(>sy60;`7 zI*UU$-GC%E^rrg71u7NXg36OUdvLN@+(AMLT7J5fc<-z!2&A!+EM5C6RN^G+XV{5$ z?1)F@!I+bS#A^a8=y9G^urSd+NMWDwqB_xAaG(pzt*k(`CtjN%|6sr4v2c z*X#R#yTwz%TY?_J^g`chU!+iPqKsf^0?HO9z?^HLMD6tiNCoG3OTI3u9Bg$_CxidS zb|0ttGawo#k#Jg*`8hD1;KdYIOn-4O$w%4R3@NGLa4+z9+fcQ?B2NcRBkSXNI4M@mJQAr)SNqQfU4c|zio(L5e3gDScp?%Na+5MP0*$DTwz zo9WS8Z)8Qbz%AiAbK;q`_!~*oH{&PE<}ND-b=F)MHVo7j!Se4Az(~*15!f&J=`#y4 z4;`h{)QbHuZ^6r73Rmg{V`5Ax2NagWn{w})9(X~RWIaigkK60AIRJO_0*(QX1QH*` z1AmlMCxS0YCvLAVv&Nz8dU@@l?iT6DyIZ6jBX#rEkFz{pnL70fqt3~R_`Aq6uS{Q?+lOU0Fh7-IS+ECxJrkz8G0bAZWDf5>0wFmV%1g<{ z>(IRzz1Aut$tk6Z!=BlG$@h>4(FPD>bBxx)-hA;4UwBFg4A4&6j+Cv(%h(eB4b0fX zU}2?mFzQef@B-gJ9Hixuf7Xr=p_HO0BmwHp1m!eNTp0Mb5`v9Uo!c0GsA9AoSx1 z8fcLDE%)6Pv@GSbx?7vSh+Nu;>X%1my%Xr5wBL;kemOF7EmjQdjy`ulC(ii zS?_Meb7b&Z_c^}0s%W6(#;n3fL0cq-pcD3W#~OFQJaRjH7Ka}OY0HdHhk0XlATt{B zTbLa8JUH5@Yd23qw8(5rj$0c!|D{Nx=gWB4maIeyTa{zMdEB?(|#DBgINNx8VmxF*v5Z89KGGji? zY-|a01A;@|^W&asJq(UV(ZI~!P8B#r>wA4OUfVCxj2(&827rBlRpI!eHBUA*-zchO za{XrG6%_EB4P7pLPplq$yBLZhPB+c7ytl3`$voELCUfLDJ@F0wx^TG36un960?>GO}gO55JK@Ap%$OaNTg^imCT& zF_7;ph=oJMNn~aPNp`@aii$#y#qpa!xL3u0{@M}s>;k!e2j}U~Vth}@eRD0_rMb7d zxwQA);-2Wj9-z3*+L>*23;FR~ST1u86$~rHN`O`+1G*4W;-dMuM>kcXFjToh2<4Qm z_-%NqMg<>%j^TVClu)FJm(A|WguIk58?)h$xo>8oKGX2K-Q0`2qktpK8nzSLjns_`b<~A9vnU{uW+7=)Sxb zwVT{}H+PccLIVk}*5YIr&|^bJYHlmL$k(U`-E?cM+UkEueO^?m_XjcW8;WNFZ;%_;3*s$+uFD0{SR>7I0zjT-#_}a^C^L{_~ zecKlMJ(VN?%q8*9Kjmm%=ZVYqFfBJ8`wLei{a_dL#`_;~Sn;RXQ z9d5h`RvK=+>*hWoxjt^(>jExw0dJ%vsy7B^@C&r$b3SNx z7H!oK7xiW^3XJz^@dn8PNvYx;T)@|m>&MD2h>sFpFvb2pBh4+=f3VD}QR;J}z5q5x zNy>cD=a9J$mlDAni1KX0-@gDQso<_ix;;G|yb(bOhNC?D*V4hOkja0ZOvh{DUaQcY zhw&D4Kvil=itq?C+~1o zgzde6!Z{;e-jC;}TRiY=)(1Q2kdiLvfn}vBT|;dAm+4vO--cq(B;^FTZZrat0-2Xk zOArqRLSLEDm3oS~1oCLbodF2PAfQSqwCW1>L_Us9E+{1<Mqggpsi&lT!*gh5^91=^)deBd6mkJa%66RHa> zDl#cn4$4NX;8*3stxe^axUi`KHFWT%;IDS0kiMJ$#tI^POilRIC+{`)Nb68!^y>j zusQj2dN8064AJ&?*=V-mf&SgLVFa|H0e8Dy@3f)8)rJOF8}Mjr0{|Rt_>tX)B5lJH zJL$x13sx<%wBd_SJZ-p12doCaz#4Fh%Lq&=QNeK48E^1W;{6aP=J7nqNY;#?)UlP* zB&DQ&@|k!=C%9gYEd}gDfNDh3jv6d`y&6#v;S6jLVCkmv?F>@hZ6P$YKk1f%>f^I$ z+zp8{lrD)VC8bH*F{N?=!B4PLp(P+2SP9+CV`-|JOtyFmv(WZzkXcl4XfR?WyiJR# z+lLLs)2LHlxs3&tDxOgM7+I{8#+gP!UxYkvq-e?X#NS5L0^ZKHxlXF45N&Mbi0-w1 zcf<$2kJi8QvC;Z}-~n2HpRUqcFMpY%F)ImSYkj2-d98kp@o+;sMOt zqRWcbU%$vvjWvX@75;)R#mqPO6&{^6kBKa%8L$lp`~MHsOqT5VJU573$qblJ{&a8r)f+(!so zYYy40&VgTRyk=6{ZQnzT8>T#-1T4waJ)~LNu#1tpA!BiNz|CY~q=jlccov_B2+dvimrA%X&95(3Pz6+J?Wb^)5zkplc@jF_OoXV%>ahdt*s z&d5ENIr95X&dB*2Z2iXr?Jt5R5Rx_aUpewSo)EVD)^(^e!okBgd%v*em8QoY;5a>NJI4kt&+Xdla#p1P#9&PAR8-CT3qo+SO$rRrzv?#pl$ndK(iuq6*ejPur0tJ3vcgvaK zXGD0_%%2)mPS&f_hXVLDWt81AaZz1wEzVo9jxO%#meckCsDH zcA$pOow~)lWpF+xEo{dB=2`p?E;2*+bR?vB@Ws z(`ot=!tOK={L}HpjB4-K=f8zb)|>4)9DJP+HV4n!*cAsG70mkA z2IZiCzVB18R(Hzuf62j-p>8=iLT8chPIfp59kz9F+kv*n{$V)ydpv-Hf00$Xv~|0c z!@(3GY!2>|5e}j*+i){dZTD~!LbbbK1584oeY|VZO@vKMdJ|3xc3spQVa|k;l`9i1 z%iDSsv=rbbG)i~^*)8v__Y_g#<-?(b5!z@=`18z;x39VZ8X6DQC7 z%}{6I0o0vgs9U=shq~7YVN-XmQnvs~W%^ZxNgYNO z=%yZ)q>xPz1SPR3h>O!}!+(ar|EvP%p?$N2u@3Zw%rWkm;41^Z zb}ZBeYN{6ps(6s!Q!7nL3$BN2PK2LNhM$LXj1A|wp0@z-)|2l*7Esz`B{uPmYX&H6 zx15kX<8PFb>@z_fvPUCH7_ zyNRYZW^qxs0l93G$iHz+q?sr50=C%7NEc!9K~R|HWbo7T9Cg-v62#|db`=JXw!-jS zp1sVrxYa1kvv>gQld&91+8=y3M`7+Ggsm`#yf1A7?`(x3$C>mfOtY&n_8YJd<|>j5 z-dBMcfxSJF;aL{;dSy&PEWAK8wsKHb>+NY0_ZXlk4%hcn5u5Fz%mXduqJkpEujvBG zPPf^TD*$!&Bg#WRxYbj(lXaN=aL87*?o3ql^DH;pv!oI*A8VY^a~Y=U z@c`!c(uGXxfOm43UrGp@`A@zl%m>rF+y=AkkgZr5?KU{cqDH5^g{r@+jMGKTL}_+W zNF;Z_>&e(c74GySSiU8L!>m;wkq9p)ZgT4yn|;Bz*Hdp*Po3n_0sn5UWZCv$$u?cd zzn=a5WOM(UMmE3217wrZrBUnVw{v7OhY+@Gir@V{vf*(H>-zR=j&{vW+5TsX(9HcY zoE~Nk&p~3|b|K{db+Oz9-N_@C(4yefK3tV`icT@0uqzanCTLYQO(4tDHQgFyv zH3_Lc3&G?_VkaDVmlsz#FYffeXg<*{F~fNg-U>@l8{S$|y>)B!VW3^}a{#4^Qy&m# z9n22Qd2p#_-qt3WotpWmW|pJ-0dl-%-l3UizbBccnmJQ5_rb6V$PV#jgO_OLhnk7V zD=Vth%rN|CK(_JbjbyM~Gt0ixOf5cCGp8a%0?1a)+*LDoML3?BTD(9r8+oiWQHT8s z#JQ2Yz@-$L8PUum6!JJ8{Y%spY4QG=`3lzmnW+`^(ab8Pvs58F73bR@31ow2zNeWt zV@`$QrCR(o&HNlwRb)13=5w0)rfkfwo2SJe(##%+Bm;7uLgKJ2iQgBCv&d}I%#Sp4 z55(+|$+jc3;BJq=7*GiN+bOdN>yEDhCEHXcCW9N!WT)5ZZYRF?3S)0P2k(c!+&wVJ z-3vVsY~*>0QulFy{fJ#T94q+Gx7&pSQKGXpyak`q+aja?LvH{NM$qT~g5FFbJkd2m zFN*+=_0zZTRyKs{Hk#Mgi`npgqQ?HZr!n$8fqN(kgi$zZdX(FTuqR3uo-MFPhF$Cz zVmlik{6MDIdt4XR^#x&+kAK`-i}C9js5;C&cR{r#%L}C$?_;=dj9U5Mg*v`8(E{DI z>=+=qZ$gF?p+g(S(c8Kiq|}B#HmKFxX+>!`b|32q#ap<5h?~&uRxpV%SO%VCa91Vo zXoCZRPj1|r3<9}C5sW>@L97y0jB8C^1(o1^ktcb{p9SW!zT7b9AoZS}KEoL#zLWPf z{dJ{b@9Xe@T5EM-)w=MnIfKNxgs=yR4oV*$PqMs3`Pr;rN%D9}wc&L&)$24+CJtNs zKfy_8**Y+F29#ZyS3)!xqK){Q!8AILnSt5)$(kbM^FteEKh$r5jzDw<6&JqR=Xh{X zG6s>-){mU37!Cq{oLh6U%+%|2g9jm?s*=#s%5^YD2Zz-(%kh_RYX;w%l>G4VzI?6H zcJwgKRgXZZ%J27;LSz<-VQ1U`369-e7E(T`^>X?tG)hS>ZcXerWce7{7j^V$$s$ zAZ_X!-)v2A>TM&S5YI;D;1}>cUt}jLO8JvCKjnK3CNq%D7>@Mf(CcIr#WcG_St>53 z|8Nrcq{6|OU^U9Ms~xd)qBvV>B*J7HlBTu%Xb%zdAL_(g7f{WB$#viz?qtE1DS6B_ zeFE~9K0yo;RhD1bQUzl#mGV`(9B~7!-Mv^31ti=69Js&u6$96QsYvmm3pXS{Wq)C5L(X7M~lOKVJ>@sPGM(pC^CZ$b)+`D zS=b4jUqC|8+0DK-$*=&3R@QnrMURDV^flm+p0||a3*TL&^5ql^<~rO46Zp-`d_@WJ z!rDPl^tOUbIgyD;X~9#cQgsgzW7uKf2B2pNr~-1tZj68`c1yI+KYShSbk@<<} zvY-){WHNFBhGS_!-3BYOZ|w37xanpC_8L#yDrze4H-lX1ias`|o+N|qBhJ8HXZRHd zY31e|mWt;f$QHJXd-ystyyXYfsbuAf!B@LPOSMZ|_qCeliciK}5-49@VvgA5A;-Q9 z5oITO%ZB1hz};n~_+u5i_CzWvp<;{Yz_ZV&!MPoiM`R08ghFi#$dRWulJ&uxPKgrP zfJ?v<0Zaz}dIb1^HtTJR|37g zAFYA=8Hz=p@jgf63t)4u^G&2vlEQDN?RdK}VfT*Mu}gM)!+X+p$Bhq_p-7F6fw0tx z$_u$@>RT=#_2AeBy9sq8S(M*tL<|29OlZsQj!dY>(M`xW-i)Pah+RP#7=_o?p^oMK z$XCekkcVQ+JV)ehh`s(Ug2k4o3}mhJnwjAQ?jc)Jpo2evCYuYo0~Wipy943;oGPJ-~JtH7a2a=vDq)N)ef>`Gwg>F8yf&g@xtqhg{<8x{B;0!JBYU5ps^HE|rSB{`}DXC^pKAc0GNU031npzLM^5RI6OEOK zMPYN-aNldnaKLs9v8iUzHaANjVEnMRGHG)mu+G_{N~eYZE=>T<5jDU%nzQ0 z-?Sh;345dnq@6=k1!Oa*$P-45lK{8!KS+=~|RF%zi%^8&HXvPSt(d;0kENtpz$gPQF z$gRi68*(*ofr-^!OI3tS(era{!4heRNl-T3P}^3uYGl%;)gMK=drp%aETtOKox;*3 zk#xoeVEeNF|10To(QaQrAzz5A1!^S-wL7jCj8;;^D~%kTOCC=qE+)6kd3FN;3lj87 z54}OS8&Cgtk@Ky0ZYK@zMyfq357s4Zaief7syp+?4H>~n~J8)ZsPZ8COm!Xk32 zu}h+@=r(PkV90*ENJgV#Q!|+Cq4)_+$0=P@t=gdlPel1xYIMVR*w6B313(_|2QQ$2 ztEkl-;PVhfZ8+?K9~+HLORl9&6^P~_(rV-L2%uD<5ml?UYr(;swtc!=B^{mX+(Q`~&0V>3=~SA-5N`cBiL*UTl0CaKLfPSyASD?49!$}e^vSN$E^`AFIJ z`9HSv9`<2YE^V!(&eXPUr(TvGrM|S{g!3>OT#yAhH?1j%rL+DY?7;mfJ zr^XabG`~|fTGKE(HI>b zJSWp_(=bkUEJ?2emI-E8xzX=Hy0d zTO8}iijkaXjAHQ0sD;~`s(lXOIljTu0Uqq(bE_ST%I&HqS1-B5c_eDXzduf#5ibOb zYmcw~ID5KAxD6YEtDxB{hADIwr!4B>hL@2jJl=w-lOhe+@a0SyvM`>FlR#%l7MPj0 zSrRk47*&3wBWiq3rbfFXYiKPO+3t>1(XuS|L`<{p#Ha5Luc0U_*gA@o!XPg%C(EO< z`(NVz2^n3>p~Aq`4LQGh60y|E`GYJs2*>Q*ky}^_wdfo@<0LB6`Q#|W$4C~&$_#R= zGjJoktPEjzuPS2TU-|K3#^WS|*)yXeVFr9Fa-b)*#i~MDz2ENos!`B*0xx>)HhZA6 zX^*9qj_fckh;KO4dI(n~x0BEx`M{h`^xigo2;Wh$TZbr z%3%n|6MEHd;%$O94na2FZ@|jn+ch1l6oVx0vbJu+YHbbmUq|Jh7SWH+py0mvJyk4i z!XPafrm>Gg(_XM9g#Wl4Dp5mIfH>dil(Wp!k z9ibzwOR8cO%4gyd1D+<(k^udwTUs|TZtJTS8EL>+X^X+_GTUu^Rh7XglQVnkHP$tG zyXS>)LS(8j8k|OxYIw(?vDZ^V)sQuswAhTaZR`B$imjX+=eNqn#AaCzqr)8U!3)+f z5!sOmuxQFR5+WNnIiy^6F3JW?4!K(PT*}^14tYp6GGgZ$X@zi3mOYfRgOfwX%ce}( zt;iwe-*E1-O_M`D#L*>?M|N{^NV?$2u1yYkQ6$`iQIE=Nq->7dgf|>i$g>jC!{Qkt z+ah~dJkLqF>MWid(NCSlQ-{+)AdhD8{6jX3YKo_`=T>+@A9t8le z&o;#VNgfshj0Pw6-{GZ@x9|gbX&1-Xc_G@|0L1Nh0UG@^AB~C_-Z*)f_n7RVJtlh+ z8n1~x7~;3%a{Yx5*U^`<%#n(6-sp{# z+hbwrmYlUZhRvM6(%izDzwYBVM0ny#jz3EzL0apQUl6f!gX-}3jP!40C?Wi6ff{{K zq#86BFCkjuP;#mSlj8yzHPAgdRg7d577boVF(zksa8|9_i`Dz@#BCTc+({;!cXs5Bg^BB(ys_N=cQvb2r3!I|DK4u+g&u1a zjrum$xxDqP3cGD3DGTlP!H1P2;78u$Ah5BEnQE9!LY2FhacQnz?^6RtdSIe8-fL-} z)&fy4y(p#dFo+VoX{pi*N#=^WXds5XZZHK6b(WB%gJl?7_TmM!rpx@C&k&B1sEphB zHn_;p0Xo;7`a$?Oe1*3sF4ghq{hwjY#CTg0d(#uC^Pt{G#x6=DxHY#3knb?=&DZFW z_SznzJ;WLFVT2m3nnFzmQF_zagk)~)J0H)kxoVBmB#Ko=(q>89G#iPbq%@FV){ykd z?VuGOH5VkK{baGG)9`3eL61@G9hmG(A79pj>OOE2YZW&Va(XcL$P=|@5O-a_hULwX&9U_yFXkiK4R zAib-Q`ddgJ3sR$n^wDoDnXXkxI|b=?Ceqsq>671@GOZJ&!xqw78`4OH^ok%YGLha_ zNVi)^ErN8!LYitr`U0EksC2so=~NTxJ%u#gLi$9I{%Rp3)T@`5{wJPYBXX3#m+y*a~_mqy|A6X(Fvs zNInbcdO>nnNPTQF)xRWq+AT<5++dV$wn9p^klcdw;{C+KuaoZEU|GRRh4iW*Z8VVv zDx|+WXqIlYAYE=D-6%+`ry&aIH9@+}L^@s}-E1M9Do9L3rinJ0VlPVR{wPR2Or$S4 zXFMmikd9DLG^q>c!KM4*KCABTRYwL&`ELW&4djfM2iy_TM?P)K_O>0T3QzCwDBT#)#uC4yAOF|6@ALE_R4P)P3z zQoe~aK_Nvfq>BY9*FqX+L;4gi&`|023R0qpl&X-jEu`ZFsh@@P^*vlVmTA30dQXtH zUvKECmFv18_8mD6DcuQz#6&FfcQ&LM3h7URbcKoZH-+?=h4fDfiYBe)7}nDw8&X$= z^u8bsFp*wSNJSRX+k!OJLORukv<34K($hXc`t&-ZboVQyUs*_x3(`lH6}*18rKd`T z^noC)H<4B;q_@ZgiJq<(q_q~(wKk;l6w;psX@-e(i9)KikQNEjR10aO4QW62T2Sde z5~Qvs(m;hY#zHz(kcMy!Yy6A5xOD8FZc#{do+8}(mRdtk$10?Mk_(d3^$;Y7CDTSh zVtaBaqyvIfX(Iid`SCqn3+XEgiYDENaiQ|Qm)Ve7o}=I$TRst_^Gu{aD5Uuo(z}8* z(L(BBLwZIbeJV)%u|^~#j0Y6bDHhTbg0$}*Q>OYmEi3r7Li(#9-C`nLt&ma!-vy}!Z#GEj1}UWB7E&)k z%CwMTcUV@iS|P;*=@}DAQ%FtZf~0iE3erJK@TS1OOY80ejn@I04e?#nk3+W{a ziY8TANclFInxB!<{X>v+6KR7&nqwh7BuE!nNQpL?9#=?Bg7l|r4L$i4Qj&$VRFICv zE+u7|+t*uq@+hQ3g0$L1nxK$gAr~Zi$`GU+j^Vny!iIFZLi${ga!jP23Te58^j9*Z zXp+P*(f}LMo~K1mUkFn3HAd+^WBY4}4YZK%q{wJeKg%*dy`4+Pb$6XY`cjY{H<6xG zNPi<2B&Ew0q+NGYZY8 zK|0+;x9*Wv>1lyN z`bvltkQNHklNORokk~R0Jt3w0UXXg4NSO-hA`5AxAT73#TGm>1 z_Zx-ugCMRDx`7?=>b7{m}6Kb-G;R5_oAm(K{~X`C|$KeI@dzFSCGbA zGX3dROHV5l(lKX{Awb2m! zksODVu8YW|Su#CtLz<9Z@1(%qww&a{x86r?1pzuR-OrKg}m>LEyXn@G1Rq<6^$ ziJpEZNSir^OLv_ODP19*BuKMNq?;8|*g|?tkRGy-#@dh$JSwF-S&+J!NGlZ5cnj$o zL8`To{Hl%3^siz1nD*t=~adF2Du>7)4PIH%rUH|DjQN?h15%srkO|^6;ic@ z^td2pSx6VykpBETDc!FGsf&qpwL%(YA%z7gY9SrE(XxUy3h8t~dSRKNr^O2COL9R{ zx@Cg2+(P<|4QY}>>MckWCemz$^q_@QBuE|$X|4_F$iq^)vjwTIi8MhW&9jj51nE)> z=|mgSQwr%ELHhGjqjaMb(n%K5EI~@Pkak5aD=1M&=L*sq6KSAAY9JRRdYUFk`4-X& zLE_&0EQQopkS3W(!xhph3n^ES5-p@bHl)3qL{F)LbmR)7bo~|5Pz!0YAZ@pN=4Y#| z(%qnt&J(1kOr&!ZQX{z_DcyKM8pkng<97=Zmo7^or3q4riFC3;y3asT`%EQICajY3*w{rb03zI4Gl!^HY4vp2-@3@n8ZP5Q|y-?28Sey5NI2+}(tLsK6p zq~i@FB~|tIZnPaDn({YGvOmC9lw_AFybQs+*2LSP@HUex5`E2~plDJN$FRQ2BCL7V zR}Y0WP>@ENNaGcf&p>J`*+tC2I_qyqw*4W|*&xA-1&xxPukg+`@S-WhDJYsWjAK}` zcW$sGyFwui5u|%fq$Gv(9yuf_UA&Yy?HC~KIeutp13(8TJkq8 z<4Bh3980R_Hj1vs3f4z{ql9NFtP}$)n$nXNQZeHrBK5bs&eBzxLb_0p)|yDCFn>er zkK~lv>Z&JKE=v`G%_&{!3TvETxlF7tZ=<{$Vpq4pGF#$m3vY~tx90&$wqwh9!E3&p zZmAv@E87~_4iC@FQP`9+3$F=QqvWency!7ZP&S!(GZo&)6_!)5R+?BZDyg0}u<$`dk?L2L zRK+%_5*5;9K^kHrous5HHIVGOdTK2R&$>#pq}q1B=*lHnpZSauMwz`Kc4iwa)56lN zQhordQKhUkitJ8LYd#wny3f>dlGr6{C(3?#c$&)r~3HQ$ozU-wbyjx93< z>vR+A4yF5x4XkL&7?J7&j$vJOwMn%}A>|6vo^k>vKk>XmI?h0{OQl;^ z#e!91VjZKfUL@y9x`IDThOcV7&#Z@reP*AL85;Y{8V~}BkfuQ$2E&)#jnKFa8annC z$6lbQ*xNL25fI*9Kw^>?Vwe}3`?0Hy`bADl8$RT_<~VYOa_QuF0yGF{k51i3N~j*6`ZJ~| zxc&hH7`u|xPB5j5_^n%9dKL-^v(X%Icuc+XN3HQLD5PrDj|)QsV}E9B+8l*_A052C z(}fR>J?;fit!V`%3SJz0kP{L2>>ur)9!b>_`1Fy1F`1ur4$FMTYvkvu-0Pe_VuPIR zY@6iTORz7F>o2ZaWltgP<3YhnV7qc~3+)_SPeIR;g+lY{ogB4=P`#hs_*;~P&h<*Z z5d&>(w>#`A+5-u&<&HNOE=;byMuo3;$&OtkDnImVU_o|H)joC_fl)A-l#wVgl-WTr zcBGxwLGV~Th_|l~A%_kHyRnn3gTbXo5iFQo`#6N|D7(bakPd<&T<;Eo$Lh&7UH~Zp z8*w0K2U3RS8cAt`qoIXhC_7fclPrAV78=Jc;i=FPHf<%m*1<&S}hsQX-PF_77TX4Z@7l>V8=dEJa zHAbsQ*lxCqduSlR?Sd`LXb@ORf`8=Mj#Lhg!|A+YQ0eeb7xT$@r(&}zm-didw1u`Z za+?zU_~7eFKkZVGewxm+C1S<2WfR5Nwc>(vpxv^zYHF{Q9_Rwd1#=g(8r^(#bC=MG zM!+KoXc}qUm2-506@3I+Z2A@YzJq9a@GR1m6kplV&bBzGbn8mibWAn`st#f?^5MQG zg@z{d@|1b76^t!1{V?L;(zr*?q3#KKrcUKB`7}2&<=%w%Skgv44*rK4v^U|LD(7L| zE@%y6oy9e#)#NtAv8>ouhG*Bg?XL+bQ`tE{w`3)p#~?sBUfzQT+~$ zO0IuF&mrFvNI(VHv939^0V%^<%V2bE-lBCy*Hw}!)>0e>jHs;#cwAFU!LG=l@HM`8Q15KOi*)se zUD4T3NLJgZQ$}W&ATwY%n?0`n@^){~5xZuU{aspm9kT>2VZB}S*x>C*wcZuMaAa;b zS9tmcS9ty=SH#r=_q}irf#*YDmyY{>xQD>=A#g4}AeA)$0=^Cb_ePwLRv-8#?0mG| z`8))C4gxv>w3DTK84_x-XJKU|V9YMy0cs+V`SI3j8bdrlkN|AXF6uZ?#1$qr8KU89 z)Dh(Ix@x3ugxQBfQOEoCBsp!OVJhKON5Y}zi1P?M8k7mI$)?@Mj(P$mvk9UsEFAhe zj9v|?BD22^=Pr}0!{OYObd~&kmLFf2O#Z#|aCj#g0*?Zl!)vOb8|DPFeApFUw;LCAwR`bvuXw!q?TXYA6DqQV+zj4;R`YsC0#EV=M&o zM@S8F<$?zJN}S6|cs67ZMGB>=>8Ram_d@49# zOGZe-p5g{g*Q%L00hs?lB4Cc?YuO^$7Y zxDG|?td+bGUEM5$8Bw<2L*wh#`YhE&cKG{jR7`aEd$J&;?3Wy7^{yUtiXf*(8(U`=-U$7`Hd;d?S2Co z7uh8}0T}VEYN$Q>P*r@iIy|`Eaq5@FiTFN1cOl0L(TKR<7I5gQQKM5~(sho5Ulb?e z;{qRo$c}ZGnd2?oxgsfhKpJTl7`qWJuFmn2@IDJ7M^*JsrssHC%tz7u&478K(t5`& zU`U8vCV_Yz7)h@|5H_t3yy`^!j=H*AY^*)DNMgr?X2$y3!!MHX;h_=rjxh}CplHWX zTsNHyq~4)Z>K*4&jAU~{gZG zPq>z9+6h04_e=dPtqo2}h>`hfBK6Me$%MJvsosue)(|TUAb|vlJKAI2RkCw30>W!* z0AVDLWX&c2fOGH!E|NRfxTLpq#2_EMLJf#wOJF?`b~#4F24^H|WE+r?MwGnjV_@ed zZ<~I-ijt;(13M2DpOw`HCaXi3tXyL2qvGIJM>*?4baEekvAtn9+h)#?V`wpW`H^fIDsim>E~ zup=bNL>trKh>Zl1EWHhuZbaFzPO%*w#?u%ULjs+%V!*I>m^ql=pcBBHu^LNb5qlP+#LlS8tDiPgoF)I+J)Oe3QZdvX2t1P2K=V4Sd zh7%~r%}{>86bsQuOrT{=c#lymk47GRrG^}%cCL!Uv~o8vZLK7l+tr47{2JSdXM)+z z1p2ixfqp7IEDK+FGA$)nmQfhQ70%6VT!aogb^vax{rK-?9ZHFPy_5_PgL;gfIy(Ou z!S#4?P@;{ap5xZ-r02oxB!pqm>{#P?u2nk!BC7|MH%1^SUde=U;;l#6C`~IR2=6l` z*Pf)fF%XYIVl+}`b7OZCg3r{ZH#%|PW^sJlPzv$JrQ6HZOo4K`G#^2!T19gsp7^Qx zh>sgLtw`o{6A*4V&BjUO0N|xTdOwV>p`fN;ON$w5rlqAPBNmsP7E(^fvJ2XjDOi7J z&)r@QK3h4t_Bos+!i-kO#Zzo(x+#Y;$9uS>SEZl6ZS+I$iZ%16EJPtx2tHGjJrYEx z`EBTV&Y^=9Ql9Zz<~^y&VU#4F}LFwa4Z9^WWe(}1H|}YP*->_OaRcr?BfR-@keV9AaqN2aG0~~ zyDrDrfx}^jGu6S8e?Zt}{c&RdZm1u%K_KrSLlE zxAo5NG*{I5tt+~Yij1#ncV)TXk3EjLL&ULf|0Rhu7j(RZi-_ZG<90VLVs~->33GQm zOtDFi;5YoLD*=a9Xmy+e7RiOiod?v77SWPx7orqZTS;b(zSQIJ5J*Zff$#^t@g90c za?L1kRd3}Y(VOm$amPB$_i!)JvY&x0qDvKhbC|41;Ea3P!MT^x50p%~hM zA>Yh8aa_fbRkp~VU#q8MWPo;$v|OuW2+DDxaXSnbA~SUFIF%w(dg0d)LKdP|;uCFD zlj*1|bPv*K9RJJuI#~Lj*4ObU1N5*@)z=8VFzc%etj}Iw$u&H$#Jm%HkrW4U8}-sB zxh9E6HjdBUr^pz7&B*hUYrc|7dzB;qXp0nO9&8q6z9nqGVYZF!*t%iygLICKom4ef zGTSN}+s`+F(?Vnd*+|PKFp{7gqmA3axKJh#`-z5;+`dmBrlchNcGkYD4|FB@>M^=$ zO0>qlVjO7t|GUQAu=qbUjzc*9CE_^$Ps%t>=Zk|-dskdVQjVqjIDd+7&AzA9*@%nA z@1>UB!*wL(ef(PNEtW<#%qNYskKqEj+{?)}bdszhbiCA0VpEm?`HhgI zrc4P58X?CwouTY_G<*C|lHvN<8ATj9M&6@vp;(XFEqs7+9@>GC?1#N%JxB1%#`F~~ zP=fswn(`5Tje?Jqey8>`*hj>%%iwf9W|q9Q$~yj-%%#D0T(c-Fi0dNf?va=Fb&0M4igZZXNApu+o-N+P3C#z)A$YS z390fp)ofd;v5BFKh+{HB*kH%uqQNl|zf`~Y-l`FC4lWu)=;31D@kASFDGr21l8(b~ zXI@Y}cMtZAI1aq6vUndCjr|GfF%#)Ughi6J;Vg^4y6A``H0XZD?T_C7(v`7K90Y>zm<4NfL{?Z(puXBo4vu(3;r`VmeJ z!}4Xk0R3>pS0kM@6icI4$bH%f0!SJ~0G*Ul`m`D!2H24AIL`2RTZUt=3=N1lzI#hm z^cT2L2I(z;L3URLd0rt@?2$3TPVhuhcH!4l)+z#d$^d!T0y%>~k`>4&XsV583&<)4 zx!MlWk3h-|5RV1&kq;mzD3H4e~R;`l2)c15C; zosmcuz4I}2G!TzTuDzISD13kqUKH_BnxX|%nw>^Me$3Ygg%H`Qw_{4*5F1BKn1-Wb zi5IgLbWl$qzb#xRbf2(?>t_p>?7MGWORz%~-=4kZ6OF%j{HZJLHP@)UI49|vL#)W^ z)qVNU#im9eUh`=ytlgEi*SfBKC)gvEL#t!mTnYF_MmH9|dONB11t}|&=sH%Twfays z7t%)7DITsTS*beh*A!tEy<~pJMPJ9Ck`@hYzJ{ta{5}>oXf=i&4gV177EWB_3h!?m zO-BRUG=pINCvPrDm{EV_To*o`<1#aNiNW9q zUW8B@@QuxkGp2hk`!{tuiieJ*%j#xF=p38P%<2G2hZcnQm^j|^I^eaON4rY8z1Z?_ z@jxG5+Ft%XW~T81KG^}U-o`#Z%s1`R58s8I2=*fS{*MUoc~ilZz~1|3wvquDqQoW= zblbf-I&G#_o1yWAR&<{{c6F7Ikm|Ygi?c}s#wt2(Uc)N79IMP<3OJzLN*?i1Bt$$7 z!wXy=IQlmr!C>Y2?P6P=lYeHOALm_#6GL}Vg8BIm9=b{twQwlX8IHMAS+ODa*y*+^91wFeev96fP~;s0^G zmdzhL?}8Aki#N{JC2cpIh7W{8Sb7pgTg&>9Q=l*KlKiyH%v&6^&ALF_{Y-V5ZIx0@D>)Fn>O zUn7<(aR?d(o(3k@JO#HI#}QK;J%l5Ohc}Lz*N6%KuVbWW(u87yv9`Fpg27SaSu#+b z)0TNg8|L!}*)CK_W%)TfI)r-%~ea z&!z&qP^j$JNj3}B?fYzxl+APsQP~(NqbV(8C>i&z1IP?9>!qrx-bzGEuHDBPbS!Es z&)r^1XX&W*Vv@(MD-&4G9QQOhJlIFpKmC!civHbhb1 z8)+KHU(|s2ILJE+bvw*v6r=PdpS9r0f^2mHe={)okYN{9Rq zsnbqbHfmgibZnAT*R~h3P%bnI**KxDX-@#c(BD%UvVm|H1Yvw2or-01kk=hv(dk4;x&oUy=U;bx%_O1qqakg!`` z=OX@I!U2BXs6*JQ$;57<+UGNdNobCU%!W8zJGJZzD3mZkuyKQ48qwCY8$|UmUq=8m zmU-;&d7VY`Q+5Llv6FFaUtKjeE|AD16zL6@Xx(ghxP)dtN0TN1TjMm+;RRhcH*;zH z6JQEx=#TEi%s@U%;MjocFywdKZVQYUf!A`N3$I#)_uxAfT~Iy{OsmOXJcdY1Rf~D> zn6jP%QN>Y5rak9Zx%M3^I0uj>(2zwdSn9HyaS1c+XS>#I*S&1lS+?tuw(CK14fADl=K4>aP7OLZnlfcQG{k0c z??%d5zk@`82TsaZMCGxZ=>l|ZTpdkklB42S<-8u?@v);j(nf3_+aYcB>Y^R zRoz?|%&czq1kY$1hFW@X0kEJZq7r@?ZyqgPjaJi(;YY0shc&N9i9A-iW%eF z8QVO!|(K0`Vl<6J$T)Tj#b9P9-Vmi#dD>QzS)LdT=Xi@@150k_BS?Et#P zch8P=;oGTnn~GZp-?|3l_Eg+<<=bu)dmKQz;=(5HHHY-B^e)dKUbuXgw*9o361}W- z!CL#Oi>OJ|YB)HZMx@N$5SxQ05UxFfyN23k{KC4l#%BCP*3qrvl!A|;f`@CnF~T|_ zf+z9wcup!I(UgD9C9SYa$)Skox*kZ#E@Ja4GUD+2U%4LXAe(1qKqNK(4AaXFlnx%J z7~ab6ak`V26jX@G<&x~)l~Fc_;J^n!vT{0-#|*OGZu zZ)GD%t~th*6dXmAz--xM_TqpiLLg}tIFDcwX@mD+bCA3qo`@;3#na?$%fnMA6XPNt zk;Pm8-;u`hbu`o+8D51~=|bBh&etK^2(%7#F?(R0eV;=SjUI9~#Y074Sv!GQ_PHXq zz=f=DyspWE--g&sl8rx4b%2zTMYk9>1&eHW^YJNoBu>|ns~ zzN41*wLL+pbvM)w!WE4W8)}E)ibiv;s1u{|+L5?*MQd}3gln@v8ftstmy%J9 zb2$7Nsh*!8HN>WichM;-vQCI%WJA7?+;Z(199_%N(8Nd{9o6=eL?od3U<|Kqz6N;9 zIA9wPZB;XO0kIj#&K8Fa7tmdJ>+59NSlDCo-&S3umf#`w{cKHKI+133HWU#_x%nBY zzb+E?D2J^RUFG!px3uj-Z;Gsxx}`J?u^VzMb$_HfQ_);EQL8Yry5EE|!W)I82UTA* z>|S@61D+-RY!(xHlDFUnO2hg%SJ8g3V23SbAH7K%+lgoZ!7n5eEA7hu#;%@GNabrg?8B)_=5nd2y@+8&S$ zgAD}Ji;lI2gpES6h%>}`BCrU8$)tmmAab}BIYA<^zr={_XGNaJks(in8$)&Tz@=Cz zVvCQgqvpYn!sW7hXSXniHQ|kO)kH9@4zHuuLbKgk(rzS5;<7?wqq3+HNR^Fe9m6e0 ziT-#VDUB=YLD&*TgC+l|08|@PHSL7RA7ct}2L^KBP(pk*%M?OqA%b(P$dfGzkC8~s z=!}%#TPZ(-7lh_*%6-L(e3c_ZWfAr-7ycd=U{f#o9Hm~mtlrrpypAq9QZK)kEk$Ev zpJR4Ms-gA?V#6C4vSz*_R-EWn?iFa#LbMt}`KYkUe- zqQF8^fw3LAZ#kCg2`3Yp31VF_AVY&svI*R@B0kH(YNQT;riDr@8fvlomR?B4J|k_6 zZG82I@I4~-xu)35X2$ESk-I2I;^R^-m<>Fe1busWcZE+ZitN+2Az=N7#@N>NdH+jnlawPiUqSc{zzBk zXB}xuo;2!;j$j)#W-XFv1Sc{&U8qc%Qm%E06-`Pf5#ii^#wDhb&^J~-$&>SCWSt9E zY9En|gfF#?Ixx@YFMiUZ5HBR?^irr?9v?izxJ(T4)+US}@q7|12{=55-!)h32sq5e z*=n1S8_SgHNSdY`!r6ugWhiDt%n1=(w1UO&X326?e~cwZIS&W;z%Ccv(aH}k!13UW zMw%=X7A>BZtPk5tp~h8BwBXWAPZ{vm8jW=O#a^Y_;&ogKYX4nwozErOO-T$xA2OZ9 zq^23`jj=ln{Wv*OWvQL(6pQN{R5){?gVdTXwsU~^gSJ$Iz)pvbD^cn4M@f3I6cD&|+4})VT zb(Qy9dX4>CdG7=7vwb%P3!R46c;-O5Z;166OOL(314AoTnWBzCoKZt;_ed!8LfQir zx|u41zUM|F;CrF)AaQlV3wfyIeVTlJkLx5PFE8^uC=hp_X%z!Uu~kq-?=v^go-Toh zfpS=r@7b}LbOYC6lv_^ZVR&VVbQTcLVD5uwXqtw*7|dy3*omW84$@?4J;_>lp_m}T zXc0Uz9dj?(n$-F?Lumm^A`r++{}gQ%j%Rro$?ujXTXO*!S;{w?sIuWJ@Bv}uF%B@4 z8$Ch5KQ&QnCjEt-2O8lw;0x%aAevI~KhaLH&Fv$taoHG||bj)s+()sS2}0M15Ka`|wQDy7fEN+ph7bj7ak z&EL`$HrA2ryO?h1IfcwC?__u0<`fyWBl>uJ;|v}hQT@`BRYwM;RjZC!G~BkE&c{?K zrk9b$d>8_@Oril&{VWhSBwmJM!VriJ0hYzh|IlEV&|pF({x_*eW@_C`%`uiQs$vMP{V`vCfmxJ@U97gr`Q1KMDPa!Vo6 zYx>(nf0;~yqZ(r8LiG4WeRUiUYW%wgktm{>?S2HQ72Pt#b2L4K2^K9O$UD?cJ&{Sz z5u8cv>VfT_RaYOXL@Qh$4z0DV5;*zoSjW1_ln$pfMI47DOWeJHy9#8&BVe4^6m

  • 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 Fe*l817>57= literal 0 HcmV?d00001 diff --git a/str.h b/str.h new file mode 100644 index 0000000..5781f98 --- /dev/null +++ b/str.h @@ -0,0 +1,50 @@ +#ifndef SORM_STR_H +#define SORM_STR_H +#include +#include +#include +#include + +typedef struct sormstr_t { + char * content; + size_t length; + size_t buffer_size; + size_t size; +} sormstr_t; + +sormstr_t * sormstrn(size_t buffer_size){ + sormstr_t * result = (sormstr_t *)malloc(sizeof(sormstr_t)); + result->length = 0; + result->size = buffer_size; + result->buffer_size = buffer_size; + result->content = (char *)malloc(buffer_size); + result->content[0] = 0; + return result; +} +void sormstra(sormstr_t * str, const char * to_append){ + size_t required_new_length = str->length + strlen(to_append); + str->length += strlen(to_append); + if(required_new_length > str->size){ + str->size += required_new_length + str->buffer_size; + str->content = realloc(str->content,str->size + 1); + }else{ + // printf("NO NDEED\n"); + } + strcat(str->content,to_append); + str->content[str->length] = 0; +} +void sormstrd(sormstr_t * str){ + if(str->content){ + free(str->content); + } + free(str); +} +char * sormstrc(sormstr_t * str){ + // sorm str convert + char * content = str->content; + str->content = NULL; + sormstrd(str); + return content; +} + +#endif \ No newline at end of file